《代码阅读方法与实践》阅读笔记之二
时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目。《代码阅读方法与实践》这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了。大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧。总之,尽管我不想承认,但我自己心里很清楚,我就是这种人。下面开始言归正传,说说接下来的几章内容归纳。
这本书在前面已经分析了大量能够影响程序指令序列的控制流程的语句,虽然这些语句已经能够满足大多数常见的编程任务,并且也是最常遇到的语句。然而,一些并不常见的部分对许多应用程序也很重要。递归代码经常用相似的定义来反映数据结构或算法。异常在C++和Java中用来组织对错误的处理。通过使用软件或硬件的并行性,程序可以增强响应性、有条理的分配工作,或者有效的使用多处理器计算机。当并行机制不可用时,程序可能必须采用异步信号(能够在任意时间发出的信号)和非局部跳转来响应外部事件。最后,为了提高效率,程序员往往在平常调用C函数的地方,使用C语言预处理器的宏替换功能。递归就不多说了,大家都比较熟悉了,接下来我们来看看剩下几种。异常机制允许程序员将处理错误的代码从代码的正常控制流程中分离出来。在C++和Java程序中都会遇到类似的构造,这些语言中用异常处理的一些错误,通过信号报告给C程序。给予异常错误处理不同于C语言中基于信号的代码,异常作为语言的一部分而不是由库提供的功能,能够沿着程序的词法和函数的调用栈传播,允许程序员以此结构化的方式处理它们。有些程序并行的执行部分代码,以增强对环境的响应,安排工作的分配,或有效的使用多个计算机或多个处理器计算机。这种程序的设计属于一个不断发展的研究领域。
第六章讲的是如何应对大型项目,开头就是一句名言,“通过扩展小型系统而形成的大型系统,其行为不同于小型系统。”我觉得这句话很对,大型项目并不是小型项目单纯的扩展起来的。大型的多个文件项目与小型项目之间的不同,并非仅仅在于分析他们的代码时,会遇到更多挑战,还在于它们提供了许多理解它们的机会。这一章介绍了一些总用在实现大型项目中的常用技术,之后分析了这类项目开发过程中具体的构成成分。描述了大型项目的组织方式,它们的编译和配置过程,不同文件版本如何空控制,项目专用工具的特殊角色,以及典型的测试策略。大型的编码工作,出于它们的大小与范围,经常能够证明应用一些技术的必要性,而在其他情况下这些技术可能根本不值得使用。这章不太能看懂,图片也是复杂到根本看不见图上的字,疑问还是有不少的,就等着和一起读这本书的同学一起讨论讨论。这里我再说说测试。设计良好的项目,都会预测先为测试系统的全部或部分功能提供响相应的措施。这些措施可能隶属于一份经过深思熟虑,用来验证系统运作的计划,也可能是系统的开发者在实现系统的过程中实施的非正式测试系统的残余。作为源代码阅读活动的一部分,我们应该首先能够识别并推理测试代码和测试用例,然后使用这些测试产物帮助理解其余的代码。
这本书不好写阅读笔记,我在看的过程中,仿佛看懂了,有好像不太明朗,所以在写笔记的过程中,不知道写点什么好。这本书虽然说不好写阅读笔记,但是并不影响我觉得这是一本不错的书。我不得不说我不擅长这个专业,有好多东西理解起来确实很困难,我最苦恼的情况就是书上给了一堆定义的东西,我理解不了,还没有例子。然而这本书上几乎每个小结都有具体的自己,让人更容易明白作者想要讲解的是什么意思,这点很难的,也是这本书值得阅读的原因吧。