| 定义 | 不改变外部行为、改善内部结构 |
|---|---|
| 前提 | 有可运行的测试或可验证的行为基准 |
| 区别于 | 重写(改变结构与实现)与性能优化(改变资源占用) |
重构与相关活动对比
| 活动 | 外部行为 | 内部结构 | 主要目标 |
|---|---|---|---|
| 重构 | 不变 | 改变 | 可维护性 |
| 重写 | 可能改变 | 重建 | 新需求与旧债 |
| 性能优化 | 通常不变 | 部分改变 | 速度与资源 |
| 修缺陷 | 改变(修复) | 尽量不动 | 正确性 |
重构的产出是结构更清晰的代码,不直接产生新功能;两者在同一提交里混做,评审会很难拆分。
重构是在不改变外部行为的前提下改善代码内部结构(Martin Fowler 定义);它服务于可理解性与可修改性,不是为清闲而改,也不等同于重写。
| 定义 | 不改变外部行为、改善内部结构 |
|---|---|
| 前提 | 有可运行的测试或可验证的行为基准 |
| 区别于 | 重写(改变结构与实现)与性能优化(改变资源占用) |
| 活动 | 外部行为 | 内部结构 | 主要目标 |
|---|---|---|---|
| 重构 | 不变 | 改变 | 可维护性 |
| 重写 | 可能改变 | 重建 | 新需求与旧债 |
| 性能优化 | 通常不变 | 部分改变 | 速度与资源 |
| 修缺陷 | 改变(修复) | 尽量不动 | 正确性 |