何为重构
- 定义
在不改变软件可观察行为的前提下改善其内部结构,提高其可理解性,降低其修改成本。 - 重构与设计模式
设计模式为重构提供了目标。
为何重构
- 重构改进软件设计
设计不再是一切动作的前提,而是在整个开发过程中逐渐浮现出来。 - 重构使软件更容易理解
任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。 - 重构帮助里你理解代码
擦掉窗户上的污垢,使你看得更远。在重构过程中把代码结构理清,你就可以从中理解更多东西。 - 重构帮助找到bug
对代码的理解,可以帮助你找到bug。 - 重构提高编程速度
良好的设计是快速开发的根本,重构可以提高设计质量。
何时重构
- 添加功能时
重构可以使添加新特性更加快捷顺畅。 - 修补错误时
出现错误说明代码设计还不够清晰,没有清晰到让你一眼看出bug。 - 复审代码时
代码复审可以让更多人有机会提出有用的建议,重构可以帮助代码复审工作得到更具体的结果。
如何重构
- 好的测试是重构的前提
重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。 - 重构的节奏:测试、小修改、测试、小修改…
每次修改的幅度都很小,所以任何错误都很容易发现。 - 添加新功能与重构过程应该交替进行,而不是同时进行。
重构与设计
- 重构与设计是互补的。
- 重构可以带来更简单的设计,同时又不损失灵活性,这也降低了设计过程的难度,减轻了设计压力。
重构与性能
- 为了让软件更易于理解,我们常会做一些使程序运行更慢的修改(重构);为了让软件运行更快,我们往往会做一些使代码较难理解的修改(性能优化)。
- 虽然重构有时使软件运行更慢,但它也使软件的性能优化更容易。
- 重构时你不必担心性能,优化时你才需要担心他们。
- 程序运行时大部分时间一般都耗费在一小半代码上,不必要一视同仁地优化所有代码。
- 你应该使用一个度量工具来监控程序的运行,让它告诉你程序汇总哪些地方大量消耗时间和空间。
重构案例
案例介绍
影片出租应用程序:根据租赁时间和影片类型计算顾客的消费金额和积分并打印详单。影片分为三类:普通片、儿童片和新片。
(1) 初始代码
(2) 分解并重组statement()
(3) 使用多态取代与价格相关的条件逻辑
网友评论