有关使用遗留代码的建议

Tom*_*Tom 37 refactoring legacy-code

我需要一些关于如何使用遗留代码的建议.

不久前,我被赋予了向报告应用添加一些报告的任务.早在2005年就用Struts 1编写了.没什么大不了的,但是代码非常混乱.没有使用Action表单,基本上代码是一个巨大的动作,里面有很多if-else语句.此外,这里没有人具备这方面的功能知识.我们碰巧在我们的合同中有它.

我对此非常不满意,不知道如何继续.这个应用程序是看不见的:很少有人(但都非常重要)使用它,所以他们在阅读代码,标准等时不关心我的眼睛是否流血.

但是,我认为应该支付技术债务.我该怎么办呢?继续沿if-else道路前进,或者尝试以正确的方式执行此要求,忽略项目的其余部分?开始一个巨大的重构,冒着我的最后期限?

Jon*_*Jon 45

遗留代码是一个大问题,我相信人们不会同意!

我会说开始一个重要的因素可能是一个错误.

一个重要的因素意味着要做很多工作,使其完全按照现在的方式运行.如果您选择自己开启,那么您将无法看到自己正在做的事情.如果它有效,没有人会知道你把工作时间.如果它不起作用,你最终得到整洁的代码,但添加一些错误(谁曾编写代码而不添加一些错误)然后你会得到'为什么这个改变'类型的问题.

我目前几乎完成了一个有10年历史的代码库的项目.我们在此过程中做了不少重新分解.但是对于我们所做的每一个重新因素,我们可以证明"这个具体的变化将使我们现在正在做的实际任务更容易".而不是"现在这对未来的工作更加清洁".我们发现,当我们处理代码时,一次修复我们实际遇到的问题,我们已经清理了很多,而不会破坏它(很多).

我会说在你重新考虑很多之前,你需要进行自动化测试,所以你可以非常高兴你把它重新组合在一起!

大多数重新分解是为了"使维护和未来发展更容易".你的项目听起来好像没有很多未来的发展.这限制了重复因素给公司带来的好处.


oos*_*wal 10

规则#1:如果没有损坏,请不要修理它.

规则#2:如有疑问,请重读规则#1.

不幸的是,遗留代码很少被描述为"它没有被破坏".因此,我们必须调整现有代码以纠正新发现的错误,调整现有代码以修改以前可接受的行为,或调整现有代码以添加新功能.

我的经验告诉我,任何重构都必须以"无限小"的小增量进行.如果你必须破坏规则#2,我建议你用最内层的嵌套循环或IF结构开始搜索并向外扩展,直到你找到一个干净的逻辑分离点,并创建一个只包含一个新的函数/方法/子程序那个循环或结构的内脏.这不会提高效率,但它应该让您更清楚地了解底层逻辑和结构.一旦你有了几个新的,更小的函数/方法/子程序,你就可以将它们重构并整合成更易于管理的东西.

规则#3:忽略我之前的段落并重读前两个规则.