第 24 章:重构
定义:在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改。
有时,代码在维护过程中质量会降低,而有时代码在最初诞生的时候就先天不良,则就意味着程序需要重构。
重构的理由:
- 代码重复
- 冗长的子程序
- 循环过长或者嵌套过深
对于有一定风险的重构,谨慎才能避免出错。务必一次只处理一项重构。除了完成通常要做的编译检查和单元测试之外,还应该让其他人来检查你的重构工作,或是针对重构采用结对编程。
重构策略:关注易于出错的模块有的模块更容易出错,健壮性远逊于其他模块。程序里面是不是有一部分代码让你和开发团队的其他人都觉得烫手?这很可能就是容易出错的模块了。尽管绝大部分人对这部分富于挑战性的代码的自然反应都会是敬而远之,但集中处理这样的代码将是最为有效的重构策略。
第 25 章:代码调整策略
“调整(tuning)”一词,指的是较小规模的修改,这种修改可能会影响到单个的类、单个子程序,更为普遍的情况是聊聊几行代码。“调整”并不是指大型的设计修改或其他在概要层次上对性能的改进。
对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统死机常常比程序的性能更为重要 性能不一定代表的是程序的运行速度,往往是吞吐量、响应或某种表现
在花费时间处理一个性能为题之前,请想清楚你的确是在解决一个确实需要解决的问题。
高效的代码不一定就是“更好”的代码。The best is the enemy of the good. 完美是优良之大敌。
不成熟优化的主要缺陷在于它缺乏前瞻性。过早的优化会对软件的整体质量产生严重的威胁,甚至包括软件的性能。
第 26 章:代码调整技术
- 逻辑:短路与以及等价转换等一大堆可以优化的点
- 循环:将判断外提、合并等,把最忙的循环放在最内层
- 数据变换:尽可能使用整形而不是浮点数、数据维度尽量少
- 表达式:使用代数恒等式
子程序:短小,定义明确的子程序能够代替多处单独执行相同操作的代码,因而能够节省空间。这些子程序也使得优化更为简单,因为重构某子程序的代码就可以惠及各处。
代码调整这一话题有点类似于核能,赋予争议,甚至会让人冲动。一些人认为代码调整损害了代码可读性和可维护性,他们绝对会将其弃之不用。其他人则认为只要有适当的安全保障,代码调整对程序是有益的。如果你决定使用代码调整,请务必谨慎行事。