一月底,我将在《 敏捷实践者2015 TLV》中演讲。 我将讨论旧版代码及其处理方法。 顾名思义,该术语是实用的 。
那么在处理遗留代码时实际可行的是什么? 它是如何提取方法的? 还是这是如何为静态单身人士引入二传手? 打破依赖? 在处理遗留代码时,有许多动作要做。
但我想停一会儿再想一想。 在遗留代码上工作意味着什么? 我们希望代码在更改后如何显示? 为什么我们需要更改它? 我们真的需要更改它吗?
定义
让我们从遗留代码的定义开始。 如果您在网络上搜索,则会看到诸如“……旧代码是指不再受支持的应用程序系统源代码类型……”之类的定义(来自: techopedia )
人们可能会认为遗留代码是旧的,已打补丁的。 上面的定义是正确的(旧的,修补的,未维护的等),但是我认为Michael Feathers( 有效地使用旧版代码 )创造的定义更好。 他将遗留代码定义为:
没有测试的代码
我想补充一点,遗留代码通常是无法测试的代码。 因此,基本上,如果10分钟前,我编写了未经测试且不可测试的代码 ,那么它已经是Legacy Code了 。
质疑守则
在处理代码(任何代码)时,我认为我们应该不断地问自己以下问题。
- 此代码有什么问题?
- 我们希望代码如何?
- 我如何测试这段代码?
- 我应该测试什么?
- 我怕更改这部分代码吗?
为什么要测试代码?
我们为什么要测试我们的代码? 测试是代码的核心。 这是安全网。
想象一下马戏团表演飞人。 下面有一个安全网(或床垫)。 运动员可以表演,知道摔倒不会造成任何伤害(嗯,也许是他们的骄傲)。 最近,我去了一个独立的马戏表演。 乐队正在演奏,一个女孩用高高的绳索来戏弄一些花样。 但是在她甚至还没开始之前,她就在下面固定了一张床垫。 这就是使用遗留代码的全部目的:在开始做花样之前放好床垫……或者用我们的话说,在工作/更改遗留代码之前添加测试。
考虑一下,只需了解我们需要对我们的代码编写测试,就可以回答(或想到)上面的问题列表。 放好安全网后,您就不必害怕跳了。 ⇒一旦编写测试,就可以添加功能,修复错误,重构。
结论
在本文中,我总结了使用遗留代码的含义。 很简单:使用遗留代码,就是知道如何向未经测试的代码编写测试。 关键是要了解我们需要这样做。 了解我们需要花时间编写这些测试。 我认为这与了解技术本身一样重要。
在下面的文章中,我将给出一些技术示例。
翻译自: https://www.javacodegeeks.com/2014/12/working-with-legacy-code-what-does-it-really-mean.html