09.重构-大型重构

1. 重构特点

  • 大型重构中,情况复杂,变化多样性,没有准确的重构步骤,只能根据实际情况考虑分析;
  • 大型重构耗时长,需合理安排工作,只在需要添加新功能或修补错误时才重构;
  • 不必一开始就完成整个系统的重构,而应该只需满足任务需求就可;
  • 大规模重构时,整个团队需建立共识。

2. 问题及方案

  • 混乱的继承体系:Tease Apart Inheritance(梳理并分解继承体系);
  • 过程式代码:Convert Procedural Design to Objects(将面向过程设计改为面向对象设计);
  • 传统两层结构(用户界面和数据库),业务代码和界面耦合:Separate Domain from Presentation;
  • 过于复杂的类:Extract Hierarchy;

3. Tease Apart Inheritance(梳理并分解继承体系)

问题:某个继承体系同时承担多种职责。
建立多个继承体系,并使用委托(依赖)关系用于调用。
ps

  • 参考抽象工厂模式(创建型)、桥接模式(结构性、抽象与实现分离);
  • 注意耦合关系;

4. Convert Procedural Design to Objects(将过程化设计转换为对象设计)

将数据记录变为对象,将大块的行为拆分成小块,并将行为移动到对象中。

5. Separate Domain from Presentation(将领域和表现分离)

将领域逻辑和表现界面分离。
ps

  • MVC(模型-视图-控制器)模式:最核心价值在于将用户界面(视图、展现层)和领域逻辑(模型)分离。

6. Extract Hierarchy(提炼继承体系)

问题:一个类承担了太多职责,其中一部分工作是以大量的条件表达式来完成的。
建立继承体系,以一个子类来表示一种特殊情况。
ps

  • 只有当条件逻辑在对象的整个生命周期保持不变时,才可使用该策略。
  • 该策略是一项大型重构,请先梳理清晰,明确步骤后,再动手处理。

参考

  • 《重构-改善既有代码的设计》(第12章)
坚持原创技术分享,您的支持将鼓励我继续创作!