我们何时说该代码为旧版代码?

时间:2020-03-06 14:34:46  来源:igfitidea点击:

任何有用的指标都可以

解决方案

我在代码中寻找的一件事是单元测试。这将赋予重构它的自由。因此,如果该代码没有测试,我会认为它是遗留代码。

术语"旧版代码"是主观的,可能是一个加载术语。但总的来说,我赞成这样的观点,即遗留代码是不能进行单元测试的代码,因此难以重构。

Micheal Feathers是出色的"有效使用旧版代码"的作者,将其定义为没有测试的任何代码。

我可能错了,但我认为没有确定的指标。

通常,当一段代码经历了至少5-6个发布周期(可能更多)时,它被视为旧代码。通常,原始实施者将不再存在,并且代码将一直保留下来。

我不知道可用于确定某物是否为"旧版代码"的任何实际指标,但是任何比编写的更旧的东西都可以视为遗留物。旧版代码对不同的人/组织意味着不同的事情,因此它确实有些主观。

如果代码:

  • 已被实现相同或者功能更好的更新代码所取代
  • 当前系统未使用
  • 很快将被其他东西完全取代
  • 由于历史原因已被存档
  • 当供应商停止支持它时

我不相信有一个明确的答案,但是我确实相信,代码是遗留代码的可能性会随着不想触摸它的人数的增加而增加,并且更改它会使其崩溃的可能性也会增加。

开发人员离开房屋将近几秒钟。 :)

如果...

银行没有钱购买新功能

我们找不到任何承认从事需要修复的项目的人

我们拥有的项目的源代码已消失

...然后我们正在处理遗留代码。

  • 当代码足够陈旧时,我们从未遇到过最初编写代码的开发人员。
  • 如果不再支持第三方库。

更好的问题可能是什么将一段代码标记为非遗留代码。

对我来说,遗产意味着不变。因此,一旦我们不再"能够"对其进行更改,它就成为了遗产。

无论该能力是否因固定的要求而被删除,是否会遭受破坏,知识损失或者其他一些影响,这在很大程度上都无关紧要。

一个相关的注意事项是,我认为我从未使用过确切的单词legacy,因为它激起了太多的情绪而无用。

我们使用"旧版"一词来指代任何仍在使用的,使用我们已经停止积极开发的技术开发的代码。

我们宁愿使用更新的工具来重写代码,也不想在当前状态下进行修改。

在我看来,所有编写的代码都是遗留代码。最初的意图和有关代码的所有决定都被遗忘了可能要花费一些时间,但是迟早我们无法想象他们在编写代码时的想法。我们永远不会自己编写遗留代码,对吗?

自开发人员离开建筑物以来,使用单元测试或者某些措施(例如秒)并不能真正衡量代码是否为遗留代码。遗留代码可能具有良好的单元测试和注释集,并且可能已经过严格的代码审查和其他分析。这并不意味着代码仍然与手头的程序相关。它只是表明代码可能写得相当好。而且,如果它不再相关,那么代码实际上将使解决该程序所针对的问题变得更加困难。

通常,当没有人熟悉或者不喜欢维护代码时,人们会将这些代码称为旧代码。

单元测试使不熟悉代码的人更容易研究它,因此理论上讲它有助于防止代码成为"旧版"。

通常,当代码是旧版代码时,它会以不同的方式进行更改。人们害怕改变它,但是由于没有人理解全部后果,所以改变往往是快速而肮脏的。可能会出现代码重复问题,因为人们不想冒险承担更深层次的更改带来的风险。

因此,在这种情况下,情况可能会以越来越快的速度恶化。

传统代码在许多地方被定义为"没有测试的代码"。我不认为它们在测试类型中是特定的,但总的来说,如果我们在不担心未知事件发生的情况下无法对代码进行更改,那么它会迅速发展。

请参阅"有效使用旧版代码"