重构的模式与方法论
- 架构重构。在不改变业务逻辑的情况下,根据单一职责和依赖倒置原则的思想:对系统进行模块拆分与合并,以明确职责降低耦合度;对包进行重新规划,划分包之间的边界,减少代码间的耦合。
- 模型重构。在包含测试的情况下,通过识别和发现模型的行为,将行为聚合到模型中:根据方法名称、参数、返回判定内聚到模型中;从流程梳理是否符合业务场景 。
- 模式重构。对于特定代码坏味道产生的问题,通过结合架构模式、设计模式来提升可读性。如:使用工厂模式统一管理对象的创建;使用策略模式降低复杂度。
- 代码重构。对于一些小的代码坏味道,可以通过 IDE 重构来快速改善即有代码,而不会影响到业务功能。如:复杂条件语句的提取;使用参数对象重构参数过多。
重构的流程
在真正实施每一种类型重构时,我们需要一个抽象可复用的模式。我尝试从书中找到一个合适的模式,但是都没有发现符合我的步骤。便在 PDCA 的前面加了个 E,代表了 evaluate:
- 识别需要重构的地方
- 制定重构计划,
- 执行计划的重构任务
- 使用测试对重构是否影响业务功能进行检察
- 调整下一次重构策略
对系统进行大规模重构的过程中,最难的地方在于识别,因为代码坏味道多的地方不一定是价值最高的。寻找你的价值曲线,寻找价值高、实施难度低的部分,是最体现你价值的地方。
脑图索引
重构不是一个简单的活,它涉及到一系列的软件开发实践:
- 创建重构防护网,保证重构过程的安全性
- 可随时继续的重构演进策略
- 评估
- API 设计合理性评估
- 模块分层架构
- 架构合理度评估与对应的改进方案
- 公共代码的拆分策略
- 面向过程代码转面向对象
- 代码坏味道识别与代码重构
- 合适的设计模式替换旧的散弹式修改
- ……
也因此,你还需要一个书单来帮助你重构到特定的模式:
- 《重构与模式》(重构手法)
- 《设计模式:可复用面向对象软件的基础》(模式与原则依据)
- 《重构:改善既有代码的设计》(重构手法)
- 《领域驱动设计:软件核心复杂性应对之道》(模式与原则依据)
- 《修改代码的艺术:构建易维护代码的 9 条最佳实践》(重构手法)
- 《代码整洁之道》(模式与原则依据)
- 《架构整洁之道》(模式与原则依据)
- 《数据库重构》(重构手法)
- 《遗留系统重构指南》(模式与原则依据)
- 《前端架构:从入门到微前端》(模式与原则依据,前端项目)
它们可以用在不同阶段的重构。
Enjoying the shit!