如何高效的阅读项目源代码 All In One
《代码阁读方法与实践》-- (希腊) Diomidis Spinellis 著 / 赵学良 译
无论是沟通
程序的操作,还是将知识存储
为可执行的形式,软件的源代码
都是最终的介质。
我们可以将源代码编译成可执行程序 ,也可以阅读代码来了解程序的功能及其工作方式, 还可以修改源代码来改变程序的功能。
大多数编程课程和书籍都将重点放到如何从零开始编写程序上。
然而,在软件系统的工作投人中,40% ~70%
是用在系统首次编写完成之后。
这些工作一定选及到阅读、理解、以及修改最初的代码。
另外,遗留代码持续不断、不可避免的累积
; 对软件重用
的强调,软件行业中人员的高流动性
;
同时,随着开放源码开发工作和协同开发过程(包括外包、代码走查
和极限编程
)日益重要,使得代码阅读成为当今软件工程师
的一项基本技能。
此外,阅读实际的、编写良好的代码,可以更加深人地了解如何构造
与编写
重要的系统,仅仅编写小型的程序
学不到这种能力。
在编写程序时就应该考虑到使之易于阅读
,并且,不管程序是否容易阅读,人们都需要去阅读它们。
虽然代码阅读是 "一项少有人称颂 、缺乏训练的活动” ( Robert Class ) , 但它不应该这样 ( 即应该给于足够的重视,并提供相应的培训。—译者注)。
本 书 中 , 您 將 会 通 过 一 些 具 体 的 例 子 ,学 习 如 何 阅 读 别 人 编 写 的 代 码 , 这 些 例 子 都 取 自 重要的、现实的、开放源码系统的代码。我们对代码进行了大量的释义,并应用到项目中所 有 机 器 可 读 的 部 分 :源 代 码 ( 及 其 注 释 ) 、文 档 、可 执 行 程 序 、源 代 码 储 存 库 、设 计 图 和 配 置 脚 本。
掌握了本书的内容之后,您将:
- 能够阅读和理解重要软件的代码;
- 领会许多重要的软件开发慨念;
- 知道如何探素大型的代码体;
- 拥有大多数重要的高级、低级编程语言的阅读能力;
- 认识到现实软件项目的错综复杂性
1.1 为什么以及如何阅读代码
有时,阅读代码是一件不得不去做的事,比如:为了修复
、检查
或改进
现存的代码,都必须去阅读相关的代码 。
有些时候,阅读代码也许是为了了解
程序是如何工作
的,对于任何能够“打开盖子”的事物,作为工程技术人员,我们总是倾向于分析
一下它的内部结构
。
您阅读代码可能是想提取可供重用的材料,或者仅仅出于个人兴趣(很少,但我们希望在阅读了本书后能够多起来), 将代码作为一种文献。
每种原因的代码阅读
都有自己的一套技术
,强调不同方面的技能
。
...
辅助材料
本书中棍供的许多源代码示例都来自于 NetBSD
的源代码。
NetBSD 是一个免费的、高度可移植的类 Unix
操作系统,适用于多种平台,从 64 位 AlpbaServer 到手持式设备。
它清晰的设计和先进的特性 ,使得它无论对于生产环境 ,还是对于研究环境 ,都是一个极好的选择。
之所以选择 NetBSD, 而不选择其他同样优秀,且广泛应用的免费类 Unix 系统(比如 GNU/Linux
, FreeBSD
利 OpenBSD
) ,是因为 NetBSD 主要的目标就是强调正确的设计和编写良好的代码,这使得它成为提供源代码示例的最佳选择。
根据其开发者的思想,有些系統好像拥有这样的哲学: “ 如果它能够工作 ,那么它就是正确的。”, 而 NetBSD 可以描述为 “ 除非它正确 ,否则它就不能工作。”。