阅读代码和修改别人代码的一些技巧以及注意事项
作为刚刚走上工作岗位的fish,都要熟悉前辈们留下来的代码。这段时间是fish最痛苦的时间同时也是最轻松的时间。痛苦是因为要看大量的代码,同时要慢慢从学生到社会人士的转变(*—*,再不能睡懒觉了,不能逃课了)。轻松是因为这段时间没有项目压力,对刚刚接触的东西都比较好奇。就是在冰火两重天的折磨下我们开始了程序员人生之旅。
开始首先遇到的情况是:“哇,这么多代码,如何下手啊?从哪里下手呢”。呵呵,其实好的代码都有一个好的架构。由于咱是fish,就不多说架构方面的东西了,免得贻笑大方。还是说代码阅读方面的事。好的架构有什么作用呢?相信大家都听过庖丁解牛的典故吧,为什么说这个人能这么厉害呢。有两个条件,一个是,牛是进化了很多年的动物,它自身的架构就相当好。另一个是,这人已经干了很多年这件事情了,所以对牛的架构相当熟悉了解了。正因为他对牛的架构相当熟悉,所以他知道从哪个地方先去下手就能非常轻松的将牛解剖了。那对于我们阅读代码呢,肯定没有那么多时间去熟悉,我们唯一可以做的就是找准下手的地方。下手的地方总结一下,无非任何事物都有个源头,那程序的主程序就是我们要关心的了。在一个就是说一个管理完善的项目都有项目文档,很多结构图。这也是一个很好的出发点。从结构图和开发文档我们就能很好的知道程序有几大骨干,血脉。这样在看看程序的文件夹组织,相信一个程序的大体结构在你心中已经有个大致的地图了。
好了,地图有了,我们就可以走一条道了,这条道不要太长或者太弯曲。走一条相对简单的,这样我们可以很快的知道这个程序的编码风格和一些常用的算法思想,以及编码风格。当然你选的这条路一定要搞清楚了,多问问自己的同事。当然了这里有从在一个和别人交流以及问问题的技巧,在问别人的时候一定要先想想,然后告诉别人你的想法。这样人家才能感觉出你的诚心,以及指出你的错误。不要一有问题,就去问人家,这样是很不理智的。当然了对于很细节的问题,实在不明白就不要问了,大概知道原理和使用方法就行了。这样我相信你会很快的熟悉了程序的结构和运行原理。
自然经过一段时间,公司会给你一些小的任务让你去练手,这个时候可能你刚接手后比较迷茫。这时候就要仔细看看需求档案,到底是要做什么。然后看看程序里有没有以前做过类似的流程,有的话自然很好了,就仔细看看以前是如何实现类似的流程。这里又涉及一个事就是,在看的时候一定手头要有个本子,把不用白的,以及有用的函数记住。为什么呢,因为项目文件成千上万,记住的话你用搜索的方法很快就能定位回来。对相似的流程熟悉后,大概有个思路后,在画画流程图在本本上。有的人可能说自己有记事本完全可以计啊,但是记事本能随便画图吗,你屏幕能大到和程序放在一个屏幕里吗?所以不要偷懒。流程图画好之后就可以写代码了,当然了别忘了编码规范。
在说点题外话,在我们学习程序的过程中,还有一件特别重要的事就是学习同事的一些技巧。看看他们是如何分析问题的,如何解决问题的。以及他们的一些调试技巧,还有对快捷键的使用。说实话对快捷键还有调试工具的灵活使用能使你无论是调试代码还是写新代码起到事半功倍的效果。由于我用vs2008,我就感觉p4,还有VassistX特别方便。
最后总结一下. 首先是阅读代码,
1、阅读项目文档,阅读程序框架流程图。
2、要找准穴位,一是找主程序,二是看程序里的文件夹组织方式,三是找一条程序流程,自己过一遍。
3、对于基础比较差的同学可以把程序里某个实现方法自己写小程序练一练,加强基础知识。
4、仔细阅读公司的代码规范,以及一些常用工具的使用方法,学习一些快捷键的使用方法。
5、学习同事解决问题的思路和方法,这都是宝贵的经验。
再说说修改代码,
1、时刻在自己的本本上多记点线索,相信大多数人不是天才。
2、拿到任务后先仔细阅读需求文档,明白需求了才可以制定计划。
3、查找是否有现成的写好的比较像的流程。然后学习,模仿。
4、画个大致的流程图,假如要是和别人代码关联就去找他交流一下,看看和自己理解的流程有没有出入。
5、开始修改代码或者写新的。注意代码规范和好的注释。
今天先写到这里,其实还有很多的查找的技巧和方法,大家自己多总结吧,这估计就是传说中的经验。