大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

《重构》- 重构入门

何为重构

  1. 定义
    在不改变软件可观察行为的前提下改善其内部结构,提高其可理解性,降低其修改成本。
  2. 重构与设计模式
    设计模式为重构提供了目标。

为何重构

  1. 重构改进软件设计
    设计不再是一切动作的前提,而是在整个开发过程中逐渐浮现出来。
  2. 重构使软件更容易理解
    任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。
  3. 重构帮助你理解代码
    擦掉窗户上的污垢,使你看得更远。在重构过程中把代码结构理清,你就可以从中理解更多东西。
  4. 重构帮助找到bug
    对代码的理解,可以帮助你找到bug。
  5. 重构提高编程速度
    良好的设计是快速开发的根本,重构可以提高设计质量。

何时重构

  1. 添加功能时
    重构可以使添加新特性更加快捷顺畅。
  2. 修补错误时
    出现错误说明代码设计还不够清晰,没有清晰到让你一眼看出bug。
  3. 复审代码时
    代码复审可以让更多人有机会提出有用的建议,重构可以帮助代码复审工作得到更具体的结果。

如何重构

  1. 好的测试是重构的前提
    重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。
  2. 重构的节奏:测试、小修改、测试、小修改…
    每次修改的幅度都很小,所以任何错误都很容易发现。
  3. 添加新功能与重构过程应该交替进行,而不是同时进行。

重构与设计

  1. 重构与设计是互补的。
  2. 重构可以带来更简单的设计,同时又不损失灵活性,这也降低了设计过程的难度,减轻了设计压力。

重构与性能

  1. 为了让软件更易于理解,我们常会做一些使程序运行更慢的修改(重构);为了让软件运行更快,我们往往会做一些使代码较难理解的修改(性能优化)。
  2. 虽然重构有时使软件运行更慢,但它也使软件的性能优化更容易。
  3. 重构时你不必担心性能,优化时你才需要担心他们。
  4. 程序运行时大部分时间一般都耗费在一小半代码上,不必要一视同仁地优化所有代码。
  5. 你应该使用一个度量工具来监控程序的运行,让它告诉你程序汇总哪些地方大量消耗时间和空间。

重构案例

案例介绍
影片出租应用程序:根据租赁时间和影片类型计算顾客的消费金额和积分并打印详单。影片分为三类:普通片、儿童片和新片。
(1) 初始代码
(2) 分解并重组statement()
(3) 使用多态取代与价格相关的条件逻辑
(4) 使用模板方法重构