Unit testing 对于承担增强和增强功能任务的开发商,有何建议;重构业务关键型应用程序?
最近,我在工作中继承了一个业务关键型项目,以“增强”。在过去的五年里,该准则已经制定并通过了许多人。顾问和全职员工已经不再在公司工作,他们扼杀了这个非常微妙和过于敏感的应用程序。我们大多数人都必须处理遗留代码或此类项目。。。它是开发者的一部分。。。但是 有零单元和零系统测试。逻辑在存储过程、视图(是的,我说的是视图)和代码之间相互混合(有时是无缘无故地重复)。文档是的,对。 我很害怕。是的,即使是最微小的“调整”或重构也是非常神圣的。如果发生一点小事故,我的雇主将面临重大的收入损失和潜在的法律问题 那么,有什么建议吗?我的第一个想法是开始针对现有代码编写断言/单元测试。然而,这只能做到这一点,因为存储过程中嵌入了很多逻辑。(我知道测试存储过程是可能的,但从历史上看,它比单元测试源代码逻辑要困难得多)。 另一种或附加的方法是比较应用程序执行功能前后的数据库状态,进行一些代码更改,然后进行数据库状态比较Unit testing 对于承担增强和增强功能任务的开发商,有何建议;重构业务关键型应用程序?,unit-testing,refactoring,brownfield,Unit Testing,Refactoring,Brownfield,最近,我在工作中继承了一个业务关键型项目,以“增强”。在过去的五年里,该准则已经制定并通过了许多人。顾问和全职员工已经不再在公司工作,他们扼杀了这个非常微妙和过于敏感的应用程序。我们大多数人都必须处理遗留代码或此类项目。。。它是开发者的一部分。。。但是 有零单元和零系统测试。逻辑在存储过程、视图(是的,我说的是视图)和代码之间相互混合(有时是无缘无故地重复)。文档是的,对。 我很害怕。是的,即使是最微小的“调整”或重构也是非常神圣的。如果发生一点小事故,我的雇主将面临重大的收入损失和潜在的法律问
扪心自问:你想要实现什么?你的任务是什么?你有多少时间?衡量成功的标准是什么?有什么风险?您如何缓解和处理这些问题 不要碰任何东西,除非你知道你想达到什么目的 代码可能是“坏的”,但这意味着什么?代码正确吗?所以,如果你重写代码,让它做同样的事情,你会花很多时间重写一些东西,在编写过程中引入错误,让代码做同样的事情?为了什么
您可以做的最简单的事情就是记录系统所做的事情。我并不是说写一些没人会读的令人麻木的Word文档。我的意思是编写关键功能的测试,如果有必要,重构代码以允许编写此类测试。您说您害怕触碰代码,因为法律、收入损失以及没有文档。那么你理解代码了吗?您应该做的第一件事是记录它,并确保在考虑重构之前理解它。一旦你做到了这一点,并确定了问题的领域,你就可以以最小的变化,以最大的利益为顺序列出你的重构建议,并以渐进的方式进行攻击。如果:代码的预期寿命将很长,将添加新功能,错误修复数量众多,那么重构就更有意义了。至于测试数据库状态——我最近参与了一个项目,我们成功地做到了这一点。我刚刚重写了企业文件系统中最复杂的子系统的数千行代码,使其成为多线程的,所以所有这些都来自于经验。如果重写是合理的(如果重写是为了显著增强功能而进行的,或者如果现有代码正在进行更多的增强),那么这里有一些提示: