重构
重构的目的:为什么要重构(why)
Martin Fowler: 重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易于理解,修改成本更低 - 重构:在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论来优化代码,修改设计上的不足,提高代码质量 - 重构不改变外部的可见行为 - 重构是时刻保证代码质量的一个极其有效的手段 - 重构是避免过度设计的有效手段 - 重构能力也是衡量一个工程师代码能力的有效手段 初级工程师在维护代码,高级工程师在设计代码,资深工程师在重构代码
重构的对象:到底重构什么(what)
- 根据重构的规模:
- 大规模高层次重构
- 对顶层代码设计的重构:
- 包括:系统、模块、代码结构、类与类之间的关系
- 重构的手段:分层、模块化、解耦、抽象可复用组件
- 重构的工具:设计思想、原则和模式
- 这类重构设计的代码改动比较多,影响面比较大,难度比较大,耗时较长,引入bug风险大
- 对顶层代码设计的重构:
- 小规模低层次重构
- 主要针对类、函数、变量等代码级别的重构
- 规范命名、规范注释、消除超大类或函数、提取重复代码等
- 重构的工具:编码规范
- 修改集中,比较简单,可操作性强,耗时短
- 主要针对类、函数、变量等代码级别的重构
- 大规模高层次重构
重构的时机:什么时候重构(when)
- 可持续重构
重构的方法:如何重构(how)
- 在进行大型重构的时候,我们要提前做好完善的重构计划
- 每个阶段完成一小部分代码的重构,然后提交、测试、运行
- 保证代码仓库中的代码一直处于可运行、逻辑正确的状态
- 每个阶段,我们都要控制好重构影响到的代码范围,考虑好如何兼容老的代码逻辑,必要的时候还需要写一些兼容过渡代码