《代码阅读方法与实践》阅读笔记二
大型项目的编译过程往往会很复杂,这类过程一般能够处理配置选项、多种类型的输入输出文件,错综复杂的互相依赖和多个编译目标。由于编译过程最终会影响生成的输出,所以能够阅读项目的编译过程和阅读项目的代码同样重要。但是对于如何描述与执行编译过程并没有标准化的方式。每个大型项目和开发平台都是用自己专有的方式来组织编译工作。然而,大多数编译过程中,一些元素是公共的。首先要配置软件的选项,精准地确定所要编译的内容。根据项目的配置,创建一个关系模型,它会说明各个项目组建的正确编译次序。编译过程中的某些部分常常不是使用标准的开发工具,而是需要使用专为特定的工具。此时需要将它们的源码进行格式转化,此时就会涉及到相应的文档协助翻译过程的进行。
设计良好的项目,往往会预先为测试系统的全部或部分功能提供相应的措施。这些措施可能隶属于一份经过深思熟虑,用来验证系统运作的计划,也可能是系统开发者在实现系统过程中实施的非正式测试活动的残余。最简单的代码测试是生成一条日志或调试输出的语句。开发人员一般使用这种语句测试程序的运作是否与他们的预期相同。程序的调试输出可以帮助我们理解程序控制流程和数据元素的关键部分。在程序代码测试中各种程序执行时应为true的条件,这些条件称为断言,基本上是一些语句,这些语句制定当程序以开发者预想的方式工作时期望得到的结果,许多语言和库都能够在对程序结构影响最小的情况下,测试断言,并在断言失败时,自动生成调试输出。类似的断言有时还用来检验函数的返回值。
文件如何命名,应该使用怎样的扩展名是大多数规范都会说明的。即使没有任何语言或编译器规定.h是C头文件的规定,但这已经成为一种默认的约定俗成。巧妙地使用缩进和编排,了解一些特定的规则之后就可以快速地掌握每个模块之间的关系。其中还有些命名约定是需要注意的,变量、类和函数的标识符大致有三种不同的构造方式,首字母大写,用下划线分隔单词和只取首字母这些规定在平常都要严格地进行遵守。代码规范是软件系统规范的一个重要组成,但是除此之外,文档、生成和发布过程的组织规范也是其中很重要的一环。由于最终用户文档经常与应用程序或发布过程紧紧地绑在一起,所以就要从系统设计开发之初就要进行相关文件和过程的设计和组织。
系统规格说明文档详细地描述了系统的目标、系统的功能、需求管理和技术上的限制,以及成本和日程等要素。通过系统的规格说明文档能够了解所阅读代码的实际运行环境。同样一段绘图代码,用在屏幕保护程序中,或作为核反映控制系统的一部分,这样就会对它的阅读态度有完全不同的看法。在提供对用户和系统总体构架的高层描述的时候就要使用设计规格说明,它一本使用面向对象的设计勾画出系统的基本类型以及公开方法。细化的设计规格一般还包括每个模块的具体信息,比如它执行的处理任务、提供的接口,以及与其他模块或类之间的关系。另外它还会描述系统采用的数据结构以及适用的数据库模式等。我们可以将系统的设计规格说明作为认知代码结构的路线图、阅读具体代码的指引。用户文档包括功能描述、安装说明、介绍性的导引、参考手册和管理员手册。因为它常常是我们唯一有可能获取的文档,所以这就说明了它的重要性。
利用文档可以快捷的获取系统的概况,了解提供特性的代码。在系统的管理者手册中,这个文件系统的帮助信息有编排好的页面组成,详细的描述了系统的 组织方式、参数化、布局策略、性能以及功能上的增强。阅读这些文字必然比分析那些一行行的源代码容易得多。它常常能够反映和揭示出系统的底层结构;有助于理解复杂的算法和数据结构,因为深奥的算法一般都很难理解和掌握。文档对非功能需求背后的理论基础安全也会做出详尽的描述,对理解它在源代码中的实现会很有帮助。系统的目标、架构以及实现,这些都可以通过文档获得。