通过本书,你将学到以下技能: ● 能够阅读理解重要软件的代码。 ● 理解很多重要的软件开发思想。 ● 知道如何探索庞大的代码体。 ● 拥有阅读大多数重要的高级(或低级)编程语言的能力。 ● 理解实际软件项目的复杂性。
通过下面这些特征,可以轻松地识别出较低品质的代码: ● 编码风格不一致。 ● 结构上毫无道理地复杂或可读性较差。 ● 明显的逻辑错误或疏忽。 ● 过度使用不可移植的结构。 ● 缺乏维护。 然而,不要指望从糟糕的代码中学到高超的编程技巧;如果将这样的代码当做文献来读,那是在浪费时间,特别是现在可以访问到那么多的高质量代码。
有选择地阅读代码并在头脑中保有一个目标。你是否在试着学习新的模式、一种编码风格,或者满足某些需求的方法?或者,也可能只是浏览代码,以获得其中的某些闪光之处
但要注意从小型的程序开始阅读;不要马上一头扎到大型系统的研究中。编译所研究的程序并运行。这样可以得到即时的回馈,既可以了解代码预想的工作方式,又可以收获一份成就感。下一步就是主动地修改代码,以此来检验自己对代码的理解。还是要从小的改动做起,然后逐渐扩大范围。通过积极地介入现实的代码,可以快速地了解新环境下的一些基本情况。在掌握之后,要考虑投入一些努力(可能还需要投入一些资金),采取更系统的方式来学习该环境。阅读相关的书籍、文档或手册,或者参加培训课程;这两种学习方式互为补充。
另外一种积极地阅读现有代码的方式是 改进它,而这些代码都是被当做文献来阅读的。
如果代码对你或你的团体有价值,请考虑如何去改进它。这可能涉及使用更好的设计或算法、为某些代码归档,或者增加功能。开源项目中的代码常常缺乏较好的配套文档;请将你对代码的理解应用到改进文档上。在现有的代码上工作时,请与作者和维护人员进行必要的协调,以避免重复劳动或因此滋生不良情绪。如果你的调整更为健壮,则考虑申请成为一个并发式版本控制系统(CVS)的提交者——有权向该工程的源码库直接提交代码的个体。请将从开源软件中得到的益处看做是一项贷款;尽可能回馈开源社团。
在有选择地处理大型系统的各个组成部分时,可以采用的策略如下:
● 定位到感兴趣的代码部分。
● 单独了解各个特定的部分。
● 推断摘选出的代码与其余代码的关系。