《代码阅读方法与实践》读书笔记三
本次阅读的是第八章至第十一章。前面几章讲的是阅读代码时的一些基础,后面这几章写的就是阅读关于代码的一些文档,系统架构。
曾听老师多次强调文档是非常重要的,在以后的工作中我们的一大半时间都会用在写文档上。当然文档的阅读也是非常必要。直接阅读代码与阅读相应说明文档后再阅读代码相比,当然是后者更为高效,毕竟阅读意思明显的文字要比阅读复杂难懂的代码容易多了。文档中可以写出系统的算法理论基础,内部编程接口等,同时也可以包括已知的问题或bug,这些做法是非常明智的。但文档通常不像代码一样有规可循,文档常常会编写不恰当的信息。第一种是未记录的特性,许多没有正式支持,或只是作为测试,或者一些bug通常是不会被记录在档案的。第二种是过于理想化的描述。这就让我想到了在课上的用户需求,业务需求和系统需求。写文档应该实事求是,不是理想化而是实际化。
编写程序时,我们有时会利用宏定义来减轻敲代码的负担,然而在一个项目的多个文件中,我们会不可避免的出现一些同名情况,尤其在全局函数和变量数目较多的情况下。这就是命名空间污染。这种错误,我们可以通过为标识符加入特定的前缀来避免。比如书中所说rnd.h文件中的所有类型,函数,宏标识符前都加上了rnd前缀。而现代C++多使用namespace功能来避免这些问题,将逻辑上同属一组的构成模块的程序实体,定义或生命在namespace控制块中。
学会阅读代码非常重要且有利于我们学习代码。在阅读代码的过程中,我们能学到在书本上学不到的一些知识,也能从别人撰写的代码中学习别人写代码的一些技巧。学习阅读代码与学习代码同等重要。