《代码阅读》(《Code Reading The Open Source Perspective》)Diomidis Spinellis 著
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上这几个因素都使得代码阅读成为工程师今时今日必不可少的技能。但是学校的教学却缺少如何阅读代码的训练,他们更多的关注的是
如何从最初的草案开始编写程序。
阅读之前,我们首先要选择要阅读的代码,而选择一些高质量的代码才能够有效的提高你的编程水平。书中给我们讲述了怎样鉴别低品质的代码:
1.编码风格不一致;
2.结构上毫无道理的复杂或可读性差;
3.明显的逻辑错误或疏忽;
4.过度使用不可移植的结构;
5.缺乏维护。
虽然作者列了这么几条,但我还是觉得,对于我这个新手,通过以上几条来判别代码的优劣还是有难度的,所以初期我还选择一些公认的优秀代码来读比较靠谱,比如说书中所选的各种开源代码。
定位你所感兴趣的某个功能的代码的位置,然后撇开其余不相关的部分,对它进行研究分析
如果你觉得在原来的上下文中理解代码有困难,你可以将它复制到一个临时文件中,删除所有不相关的部分,这一过程被称为切片。
在其他情况下,代码可能不是学习范例,而是需要被修复的。如果自认为发现了一个大型系统中的 bug,你需要采取一些策略,不断细化对代码的阅读,知道找出问题。
在这种情况下,你需要利用一些工具来帮你完成维护任务。
在多数情况下,代码阅读不是为了修复缺陷,而是为了增加新的功能、修改现有的特性,调整代码使其适应新的环境和需求,抑或是重构以加强代码的非功能性质量。这时可以采用以下策略:
1.定位到感兴趣的代码部分。
2.单独了解各个特定的部分。
3.推断摘选出的代码与其余代码的关系。
代码阅读也可能是为了寻找可供重用的部件。
这部分代码阅读的关键理念是降低期望值。
通过阅读代码找出功能和逻辑上的错误。
以及代码的非功能性检查(是否符合组织的开发规范和风格?是否有重构的可能性?等等…).
通过以上的笔记我们不难发现作者描述的代码阅读的主要方法就是:定位,细读,操作(修改,增加,重构),检查。
PS. 1.这本书是偶然在图书馆发现的,看了两章后果断自己也入了一本。作者再书中以一些经典的开源代码为例,循序渐进的呈现给读者这些开源代码的奥秘,各位童鞋们值得一看。
2.最近一段时间在实习公司参加实习,进公司的第一件事是给了我们他们做过的小系统,让我们去自己研究。(木有任何文档,注释基本是少的可怜)。这可不是一件好玩的事情,刚开始我是毫无头绪的一行一行往下看,到最后什么门道也没看出来。知道读了这本书,才算是稍微有了点章法,现在进展还不错。
3.切身体会到,当前这种时代下,阅读代码的能力绝对是非常重要的。