阅读代码经验
- 看代码的过程中,注意记录自己的理解或画图,形成文档(不一定要正式文档);
- 标记代码的过程中最好不要用行号,可以以函数名进行定位;
- 阅读代码的时候,可以结合断点调试的方法加深对代码的理解;
- 在面对一个庞大的系统时,看代码往往不知道如何入手。如果一个类一个类地看,往往目的性差,而且对于系统有个功能实现的把握不强。推荐的方法:针对某个功能从前到后串着看,然后在一些节点上进行适当发散。当你看的功能越多,你对系统的了解就越深入;
- 有空的时候,要多检查自己的代码;
设计经验
- 对于复杂的模块,不要急于动手写代码,先要构思好,养成画流程图的习惯。对于代码的一些细节,要仔细考虑。这个时候的仔细,会节省自己很多调试代码的时间。
- 在编写代码前,设计工作非常重要,它对日后代码的维护、扩展都至关重要,所以宁可花大量的设计代码,也不要一上来就动手写代码;
- 设计接口时要尽可能地考虑扩展性;切实体会:ZengLiang设计信号函数时采用QVariant作为参数进行传递;
- 在进行大的修改之前,需要有设计文档。设计文档的主要内容有:当前的状态、存在的问题、解决方案;
编写代码经验
- 不要拷贝代码,就算是结构一样的代码也要重新写一次,因为复制代码很容易忽略一些需要修改的地方,导致程序出现难以发现的逻辑错误;
- 在修改完代码后一定要仔细测试,以防遗漏了需要考虑的地方,尽量减少Bug;
- 在使用ASSERT前的时候,打印出造成ASSERT的必要信息;
- 在设置对象的值时一定要明确;切身体会:qpainter->setfont();
- 谨慎使用新技术:要对新技术有全面的考察(优点、缺点);
- 不论代码是否合理,绝对不能留下意识到的可能的bug,切身体会:3D双击变单屏
- 编写完成的类和函数,能进行单元测试的一定要进行单元测试,这是代码质量的重要保障;
调试代码经验
- 在调试程序的过程中,如果程序的运行行为出现了与预期不符的情况,则一定要找出不符的原因。因为出现这种情况往往意味着程序存在错误。
- 回溯法定位问题的快捷方法:可以在开发机或真机上下载并编译若干个主要节点的版本例如每两百个版本一个副本,然后使用安装包进行定位,最后再使用代码进行验证。
- 定期对bug进行review,挑选出一些置为later或后续版本修复的bug进行修复;
提交代码经验
- 在提交代码之前,仔细审查修改过的地方;
- 代码提交SVN最好一点一点提交,不要一口气提交很多,这样有利于回溯;
- 每次提交只针对一个点,例如新增功能或修复bug。否则,无法做到只回退某个点的修改;