Cra*_*gus 39 legacy refactoring legacy-code
当您在遗留代码库中工作时,随着时间的推移会产生哪些影响,从而提高代码库的质量?
代码库是由许多开发人员编写的,他们多年来具有不同的专业知识水平,许多领域未经测试,有些领域不可测试,而且没有花费大量时间编写测试.
cha*_*ers 35
这是一本很好的书.
如果你不喜欢这个答案,那么我能给出的最佳建议是:
[1]:遗留代码=没有单元测试的代码,因此是未知的
在没有自动化测试套件的情况下更改遗留代码是危险且不负责任的.如果没有良好的单元测试覆盖率,您无法知道这些更改会产生什么影响.Feathers建议采用"束缚"方法,在这种方法中,您需要更改需要更改的代码区域,编写一些基本测试以验证基本假设,通过单元测试进行小的更改,然后从那里开始计算.
注意:我并不是说你需要停止所有事情并花费数周时间为所有事情编写测试.恰恰相反,只需测试您需要测试和从那里进行测试的区域.
吉米·博加德和雷·休斯顿在一个非常类似的主题上做了一个有趣的屏幕演示:http: //www.lostechies.com/blogs/jimmy_bogard/archive/2008/05/06/pablotv-eliminating-static-dependencies-screencast. ASPX
Hap*_*ido 21
我使用由大约50名程序员编写和修改的遗留1M LOC应用程序.
* Remove unused code
Run Code Online (Sandbox Code Playgroud)
几乎没用......只是忽略它.你不会从那个获得巨大的投资回报率(ROI).
* Remove duplicated code
Run Code Online (Sandbox Code Playgroud)
实际上,当我修复一些东西时,我总是寻找重复的东西.如果我发现了一些我将一个泛型函数或注释所有代码出现重复(有时,放置泛型函数的努力不值得).主要的想法是,我讨厌不止一次做同样的动作.另一个原因是因为总会有人(可能是我)忘记检查其他事件......
* Add unit tests to improve test coverage where coverage is low
Run Code Online (Sandbox Code Playgroud)
自动化单元测试很棒...但是如果你有大量积压,除非你有稳定性问题,否则任务本身很难推广.选择你正在研究的部分,并希望在几年内你能获得不错的报道.
* Create consistent formatting across files
Run Code Online (Sandbox Code Playgroud)
IMO格式的差异是遗产的一部分.它会提示您编写代码的时间或时间.这可以为您提供一些关于如何在代码的这一部分中表现的线索.做重新格式化工作并不好玩,也不会给客户带来任何价值.
* Update 3rd party software
Run Code Online (Sandbox Code Playgroud)
只有当新的操作系统不支持新的非常好的功能或您拥有的版本时,才能执行此操作.
* Reduce warnings generated by static analysis tools
Run Code Online (Sandbox Code Playgroud)
值得的.有时警告可以隐藏潜在的错误.