ilo*_*arn 23 java refactoring legacy-code
我是一名初级软件工程师,他接受了接管旧系统的任务.根据我的初步评估,该系统存在一些问题.
我该怎么做才能提高系统质量并解决这些问题?我可以考虑使用静态代码分析软件来解决任何不良编码实践.
但是,它无法检测到任何不良设计问题或问题.我该如何逐步解决这些问题?
Pét*_*rök 16
获取并阅读有效使用旧版代码的工作.它完全符合这种情况.
正如其他人也建议的那样,对于重构,你需要一套可靠的单元测试.但是,遗留代码通常很难进行单元测试,因为它尚未编写为可单元测试的.因此,您需要首先重构以允许单元测试,这将允许您开始重构......一个糟糕的捕获.
这本书将帮助您.它提供了许多关于如何使用最小和最安全的代码更改来设计设计糟糕的代码单元的实用建议.自动重构也可以帮助你,但书中描述的技巧只能手工完成.然后,一旦第一组单元测试到位,您就可以开始逐步重构,以获得更好,更易维护的代码.
更新:有关如何接管遗留代码的提示,您可能会发现我之前的这个答案很有用.
正如@Alex所指出的,单元测试对于理解和记录代码的实际行为也非常有用.当关于系统的文档不存在或过时时,这尤其有用.
And*_*son 14
首先关注稳定性.在应用程序周围存在某种稳定的环境之前,您无法增强或重构.
一些想法:
不惜一切代价,要注意重写整件事的诱惑.在这种情况下,它几乎不是正确的事情.如果它有效,请专注于保持其正常工作.
作为初级开发人员,不要害怕寻求帮助.正如其他人所说,有效地使用遗留代码是一本很好的书,正如Martin Fowler的Refactoring一样.
祝好运!
你的问题#7是迄今为止最重要的问题.只要您不知道系统应该如何表现,所有技术考虑都是次要的.每个人都在建议进行单元测试 - 但如果你无法区分有意和无意的行为,你如何编写有用的测试呢?
因此,在开始触摸代码之前,您必须从用户的角度理解系统:与用户交谈,使用系统观察它们,在用例级别编写文档.
是的,我认真地建议你花几天时间,更可能是几周,而不需要改变一行代码.因为现在,你所做的任何改变都可能在你没有意识到的情况下破坏事物.
一旦了解了应用程序,您至少会知道哪些功能对于测试(手动或自动)非常重要.
首先写一些单元测试,并确保它们通过.然后,每做一次重构更改,只需继续确保测试不断通过.然后,您可以确信您对外部世界的应用程序行为没有改变.
这还有一个额外的好处,即测试将始终存在,因此对于任何未来的更改,测试仍应通过,以防止新更改中的任何回归.
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |