可以说,大部分的程序员每天最多的工作就是修改遗留代码。
缺少测试的代码,就是遗留代码。缺少测试的代码非常糟糕。没有测试,我们无法快速且有保证地修改代码。
修改机制
修改代码的四大原因:
- 增加特性
- 修正缺陷
- 改善设计
- 优化资源
这四个修改代码的原因会对遗留代码带来以下影响
| 增加特性 | 修正缺陷 | 改善设计 | 优化资源 |
功能 | - | 变化 | - | - |
新功能 | 变化 | - | - | - |
结构 | 变化 | 变化 | 变化 | - |
资源 | - | - | - | 变化 |
为了降低修改遗留代码的风险,我们需要思考以下几个问题:
- 我们要做什么修改?
- 我们怎么知道已经正确做出了修改?
- 我们怎么知道修改对其他部分没有造成破坏?
做回归测试可以保证修改代码的正确性,但是一个大型项目,做一次回归测试会花费相当多的时间。如果你要改动一个大型的函数,其中包含了大量复杂的逻辑。那么,我们应该分析,思考,并且与更懂这段代码的人讨论,然后做出修改。
为了保证我们的修改没有引起其他部分的破环,必须要做测试。但是每一次回归测试都要耗费大量时间,这无疑降低了开发的效率。更好地一种测试方式是,单元测试。
单元测试的特性:
- 运行很快
- 能够帮助定位问题
遗留代码修改方法
- 确定变更点
- 找到测试点
- 打破依赖关系
- 编写测试
- 做出修改并重构
下次学习
遗留代码中的重要背景知识:感知/分离/接缝