编程高手与调试高手

没门语言入门调试必须要掌握的调试命令:

1.运行程序

2.设置断点、取消断点

3.运行到断点

4.单步跟踪(setp into)

5.单步执行(step over)

6.显示变量、对象、源程序

7.退出调试

通过调试,程序员可以学会如何运用断点、如何最快地找到可疑语句,如何很迅速地找到问题所在从而改进程序。而不断地调试,使得程序员不停进行调试操作,变成了操作高手。调试内容可以说千变万化,技巧也多多,关键看程序员的积累。例如,循环语句调试的技巧、同步异步调试的技巧、中断调试技巧、外设调试技巧、数据库调试技巧、边界调试技巧、例外调试技巧、屏蔽法调试技巧、替代法调试技巧、接口调试技巧等等。

调试象开车一样,不会开的时候,程序员有恐惧感,会开了以后,程序员特别想调,开多了,程序员越发老练,调试操作越来越快、对问题发生的原因和纠正方法也熟记于心中,技巧也油然而生,积累越来越多。好的程序员不但调试自己的程序,而且会帮助其他程序员解决调不出来的程序的问题。程序员在帮助别人的时候,更能尽显调试才华,成为真正的调试高手。

少走弯路去学习面向对象编程

面向对象是一种思想理论,要远远高于编程语言。不深入理解面向对象理论就无法做到编写比较高级的软件,而且往往这些软件不能有效应对变化,不能复用,不能扩展,不能维护等。使用抽象方法还能应对软件的复杂度,因为抽象是对事物的简化方法。

先搞清抽象是什么

  抽象是具体到一般的过程。虽然抽象是一个简单的概念或者说过程,但是要领悟其中的涵义不能单从编程语言上来,应该是一种逻辑思维的角度来思考抽象是什么。

  你可以对自然世界的进行抽象演习,同时也是抽象最主要的学习方式。要知道面向对象理论是人们从对现实世界的一个客观反映,是在参照现实世界,比如你是对你的某某人抽象为人,他的行为怎么抽象。

接下来思考实现抽象有什么方法

  比如分类法就是抽象的基本方法。然后联系对行为抽象,因为分类法是主要是针对静态的东西进行抽象(淡然不排除动态),而行为是对象与对象交互方式,所以对行为抽象也具有重要的意义。

  然后要思考软件的本质(数据和逻辑)以及软件的变化特性,以及如何重用(你看设计模式的时候,要注意这书的副标题)。

  抽象可以应对变化,如何应对变化你自己想清楚。抽象是什么,以及如何应对变化,如果搞不清楚的话,面向对象只会停留在语言层面。语言层面的东西是浅显的,真正要掌握的是思想,就像我们人类一样。

思考面向对象的继承、封装以及多态

  这三个词如果从编程语言的角度来讲,没有多大的意义。要软件根本上来讲,如何重用啊,外部如何看待内部以及在运行时如何处理抽象与实现的关系。

  软件实现为了达到应对变化,提高复用。

  继承的本质是提高重用,但是继承不是重用的唯一方法,还有组合这个非常重要的方法

继承从语言层面来讲可以简单理解为 class A : class B,组合才是提高重用的关键,现在很多的商业上不都是要整合啊,实际就是组合的一种显示表述,自己不实际去做,但是掌握着关键的东西(核心竞争力)。

  封装是一种机制,就是对象的外部看到是的对象是一个统一的整体,从语言层面上讲就是那些关键字啊。真正要掌握的是如何封装,如何确定哪些东西要封装,多态可以简单理解为一个抽象有很多具体实现。 那么在运行期间就需要动态决定采用哪种具体实现。

最后要真正把握软件的变化,复杂度以及如何重用才是根本,面向对象对软件来讲只是一种方法手段。

代码质量随想录(一):可读是王道

花最少的时间就能理解的代码。实际上,很多工作中的沟通不畅都是源于对产品代码、设计、架构的理解不到位。对于这个问题,我提倡采用极限编程或与其等效的协同式结对或组团工作法,同时缩短代码评审周期。所有一线程序员一定要经常举行20-25分钟左右(番茄法)的技术讨论对话。长时间进行有意识的质量训练,就可以在工作中积累大量的代码范式和可复用模块,并且在遇到新工作的新需求时及时从脑中呼出原有的高品质解决方案。如果因为代码品质得不到保证而导致沟通不畅,那么相应的效率、架构、易测试性都可能随之出现问题,因为它们最终都要落实到具体代码与具体开发者身上,一个尊崇易读性的编码环境才能催生执行高效、架构合理、易于测试的代码。

代码质量随想录(二):必也正名乎

特定技巧:

1.使用更具表达力词语:例如以在BinaryTree类的设计中以height或nodeCount代替size。

2.避免空泛名称:tmp、retval、i、j、k等,除非确有必要,否则不用。

3.使用具体而准确的名称:描述更多细节的CanListenPort()优于ServerCanStart()。

4.附加重要属性:将Ms缀于以毫秒计时的值名称之后,将Raw缀于未经处理的数据名称之前。

5.大作用域用长名:不要把一两个字符的名称用在一大段代码中,短的代码可以有短名。

6.特殊名称用特殊格式:类成员可以_结尾,以与局部变量相区隔。$符号、大写或下划线等特殊格式可以区隔特殊的名称。

几点学习Linux编程的建议

弄Linux的环境大体有3种办法:

  1. 在Windows上安装cygwin
  2. 在Windows上安装虚拟机,再安装Linux
  3. 直接装Linux,弄个双系统

3种办法我都用过,目前我个人是双系统,但是对于初学者,我强烈推荐使用第一种方法,是的,极其强烈。原因很简单,就是cygwin安装简单,不用分散精力。cygwin官网(www.cygwin.com)对它的一句话介绍是: Get that Linux feeling - on Windows(在Windows上找到Linux的感觉),确实特别棒。

中国历史发展的转折点

俗话说,崖山之后无中国,显然,宋朝的灭亡,绝对不是简单意义上的改朝换代;而是中国第一次亡国,中国人第一次成为亡国奴,作为非汉族政权第一次在地域上全面征服以往数千年的汉族中原政权,并造成传统华夏政权在文明政治上的断层,一脉相承数千年的中华文明由此产生断层,其影响深远延续至今。

  宋文化是古代华夏民族文化的最高成就,无论经济和文化都达到了"全无古人、后无来者"的历史高度,如果宋文化能一脉相传一直发展下去的话,中国势必将走向复兴之路。

  然而,宋朝被蒙古从军事上灭亡了,崖山之战中十万南宋军民投海自尽,可以说中国的精英尽丧蒙古人之手,此后汉文明再也没有振作起来,市民社会的发育,新型商业经济的发展,以及科学技术的创新都无从谈起,中国丧失了最好的发展机会。

宋的灭亡根源,在于北宋和金国的海上之盟的战略性错误,宋金错误联盟,导致失去辽国缓冲带,敌国即可长驱直入,金国灭亡辽国之后,直接从正面攻打宋国,导致北宋的灭亡。北宋的灭亡又导致中国北方全部沦陷,南宋失去了原来北宋的山西和关中养马的马场,导致南宋只能靠步兵和北方游牧民族的精骑对阵。

  南宋初年的名将,包括中兴四将中的岳飞、韩世忠、刘光世以及刘錡、吴玠、杨沂中均为华北汉人。从小接受的是忠于宋朝的教育,忠心保卫的是宋朝,在抗金多年以后,终于有击败完颜宗弼等金国主战派并收复失地的实力。灭宋的蒙古镇国大将军张弘范和他的父亲张柔是河北的金国汉人,从未接受忠于宋朝的教育,一路击败南宋优势兵力,崖山海战灭宋后张弘范在崖山写下"镇国大将军张弘范灭宋于此"十二字。

编程相关几篇文章摘录相关推荐

  1. 基础,算法,编程的1000+篇文章总结

    基础,算法,编程的1000+篇文章总结 本文收集和总结了有关基础,算法,编程的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, ...

  2. 如何自学编程?这篇文章给你一条可行之路

    今天推荐一本新书<微信小游戏开发(前端篇)>.请在本文留言评论,公众号将选出最走心的3位小伙伴,每人赠送一本,本活动在 3月1日 12:00 截止. 这本书基于一个精心设计的PBL实战项目 ...

  3. Linux C Socket编程,这篇文章让我耳目一新

    目录 1.   什么是TCP/IP.UDP? 2.   Socket在哪里呢? 3.   Socket是什么呢? 4.   有很多的框架,为什么还在从Socket开始? 5.   Linux C So ...

  4. 云边协同关3篇政策与技术跟踪专题文章摘录

    云边协同关3篇政策与技术跟踪专题文章摘录) 云边协同的内涵 一.云边协同的必要性 云计算技术以廉价且大量的计算服务器提供了强大的计算能力,可以为用户和应用提供按需访问的丰富计算资源和存储资源.但云计算 ...

  5. 英语学习相关文章摘录

    英语学习相关文章摘录 最近突然决定要好好学习下自己的英语,所以搜集下相关文章,摘录一些准备实践的观点: 我的英语学习经验 有人可能觉得学英语听地道的美式.英式英语是最佳的.但是我觉得非常有必要接触不同 ...

  6. 写给编程初学者的一篇文章,该如何学习编程?我的编程学习之路

    我的编程之路 当初还没有学习编程的时候,真心觉得编程好难啊,这是人学的吗?怎么全是符号字母?这都是啥啊?真的是让人满头问号,目前编程行业工资比较高,很多人都想学一下编程,但又不知道从哪里开始学习,我觉 ...

  7. 少儿编程:C++绘图相关书籍篇

    1.魔法学院的奇幻之旅:用GoC编程绘图.基础篇(2017.01) 2.青少年C++趣味入门--2017-04-01 https://study.163.com/course/introduction ...

  8. 深度聚类相关(三篇文章)

    一.Deep Clustering for Unsupervised Learning of Visual Features 原文链接:https://arxiv.org/pdf/1807.05520 ...

  9. 销售的1000+篇文章总结

    销售的1000+篇文章总结 本文收集和总结了有关销售的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, 其分享了有关AI的论文 ...

最新文章

  1. .Net Core扩展 SharpPlugs简单上手
  2. 进阶学习(3.6) Prototype Pattern 原型模式
  3. SecureCRT中使用 rz 上传文件 遇到 rz: command not found 的解决办法
  4. python中字典和集合的使用
  5. SQLServer 合并ID相同行,同ID的列值累加。
  6. python脚本-记录Python脚本的运行日志的方法
  7. Verdi的使用技巧总结
  8. 英康手机订单系统APP使用说明
  9. 济南清北学堂游记 Day 2.
  10. 吴裕雄 01-mysql管理
  11. 新书推荐 |《点石成金:访客至上的Web和移动可用性设计秘笈(原书第3版)》...
  12. VSTO之一:Word外接程序
  13. 计算机课程设计之外卖点餐系统-基于javaweb的外卖系统源代码-校园外卖点餐系统java
  14. kafka seek方法
  15. Cygwin的安装使用,及其软件包apt-cyg的配置使用,以及apt-cyg错误“/usr/bin/apt-cyg: line 25: $‘\r‘: command not found”解决
  16. 富文本ueditor工具应用于JavaWeb项目
  17. JSD-2204-Redis缓存-Day17
  18. 海雀口中美食遭贪吃海鸥打劫
  19. 2022-2028全球与中国DevOps工具市场现状及未来发展趋势
  20. 建立新闻内容的数据库_使用数据新闻学产生内容创意

热门文章

  1. 人生没有太晚的开始,只有不开始
  2. python在财务上有什么用英语怎么说_财务人员经常用到的英语
  3. 英语单词记忆 词源法-思维导图(03)词源form-57
  4. switchhosts的作用
  5. C++11精要学习:decltype的功能与使用
  6. c语言入门篇:注释定界符详解
  7. 给图片添加多条文字水印和图片水印
  8. dnf压爆服务器挑战网站,DNF手游压爆服务器挑战网址分享
  9. S形曲线-斜坡指(S形加减速)
  10. 简简单单玩转CSS3(1)