修改代码的艺术读后感

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改代码的艺术读后感相关的知识,希望对你有一定的参考价值。

这本书提到了一个我曾近不知道的概念:遗留代码。所谓遗留代码,指的是随着时间流逝,之前的代码纵使再完美无缺,也不可避免的产生腐化,失去原有的便利而显得腐朽发臭或者说没有编写测试的代码,或者说是遗留代码有许多预防措施,但是它的产生不可避免。如何解决它是整本书的核心。

书的第一部分,介绍了代码的修改机理,包括感知、分离和接缝和工具的使用,同时简要介绍了遗留代码以及测试的重要性。可以说,扭转遗留代码离不开测试。

       遗留代码修改算法包括以下几步:   

(1) 确定改动点;(前提:理解代码)

(2) 找出测试点;(前提:理清代码间的联系)

(3) 解依赖;(解依赖是为类编写单元测试的前提 )

(4) 编写测试; (编写符合代码当前行为的特征测试 )

(5) 修改、重构。 (在存在测试覆盖的前提下,修正bug 、改善设计等 )

合理的测试是必要的,所以解依赖技术是这本书的重中之重。这就是为什么本书用后面的大量章节描述解依赖的原因吧。

之后讲的伪类也可以说是测试的一个环节,为了测试的方便所设计的一部分。

中间的部分讲的并非难以理解,并不会有什么许多复杂的概念。他提出了许多在修改代码时遇到的实际而简单的问题,比如时间不够,修改过程漫长而遥遥无期等。可以作者说在理论的分析之后,开始考虑实际情况可能遇到的问题,并非来自代码处理上的问题。这里提供的更多的是技巧上的帮助,并非理论的帮助。

文章的最后一部分,则是关于解依赖技术的具体化实现问题。比如,接触类内部依赖的解依赖技术:

子类化并重写方法 :将少数无须测试的内部接口重写,通过实例化重写的派生类来测试原有类的接口。这里的重写是指虚函数的重实现,而非覆盖。

提取并重写调用:封装API ,并重写该接口

提取并重写工厂方法:用于实例化伪对象,避免更改接口,本质就是替换实例变量。

提取并重写获取方法:延迟获取实例变量,用于C++ 。因为C++ 在构造函数中虚函数机制被禁止,故无法再构造函数中调用子类重写的工厂方法。

 

特定情况下的解依赖技术:

分解出方法对象:重构巨型方法

朴素化参数:避免参数依赖

封装全局引用:

以获取方法替换全局引用:利于重写获取方法。

定义补全:C/C++ 的定义和实现是分开的,通过重写实现替换原有行为。

连接替换:利用链接期接缝,替换库,DLL 等,实现行为替换。

暴露静态方法:避免对象的实例化,用于难实例化的对象。

换函数为函数指针:用于C 的行为替换,不推荐。

整体而言,整本书开头着重于理论的建立与解析,之后两章则是进行具体的探讨与理论的运用,向我们解释了遗留代码以及处理方式。

以上是关于修改代码的艺术读后感的主要内容,如果未能解决你的问题,请参考以下文章

《软件调试艺术》读后感四

《梦断代码》读后感03

《伪装的艺术》读后感

《伪装的艺术》读后感

《Word排版艺术》读后感,兼谈LaTeX

《软件调试艺术》读后感一