5

任何有用的指标都可以

4

15 回答 15

12

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

于 2008-09-23T03:57:33.517 回答
9

如果代码:

  1. 已被实现相同或功能或更好的更新代码取代
  2. 当前系统未使用
  3. 很快就会被其他东西完全取代
  4. 由于历史原因已存档
  5. 当供应商停止支持它时
于 2008-09-23T04:00:36.647 回答
7

我们使用术语“遗留”来指代任何仍在使用的代码,使用我们停止积极开发的技术开发。

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

于 2008-09-23T04:17:49.397 回答
6

Micheal Feathers,优秀的“有效地使用遗留代码”的作者,将其定义为任何没有测试的代码。

于 2008-09-23T03:57:36.933 回答
6

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

对我来说,遗产意味着不可改变。因此,一旦您不再“能够”更改它,它就是遗产。

这种能力是否因固定要求、对损坏、知识丢失或其他影响的恐惧而被取消,在很大程度上是无关紧要的。

一个相关的说明是,我认为我永远不会使用确切的词“遗产”,因为它会激起太多的情绪而没有用处。

于 2008-09-23T04:05:17.617 回答
4

我不相信有一个明确的答案,但我确实相信代码是遗留代码的可能性会随着不想接触它的人数的增加以及更改它会导致它崩溃的可能性而增加。

于 2008-09-23T04:02:47.747 回答
1

术语“遗留代码”是主观的,可能是一个加载的术语。但总的来说,我认为遗留代码是不可单元测试的,因此难以重构。

于 2008-09-23T03:57:36.137 回答
1
  • 当代码足够老时,您永远不会遇到最初编写代码的开发人员。
  • 当不再支持 3rd 方库时。
于 2008-09-23T04:03:57.870 回答
1

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

使用单元测试或像开发人员离开大楼后的秒数这样的度量并不能真正衡量代码是否是遗留代码。遗留代码可能有一组很好的单元测试和注释,并且可能已经过严格的代码审查和其他分析。这并不意味着代码仍然与手头的程序相关。它只是表明代码可能写得相当好。如果它不再相关,代码实际上会使解决程序开发的问题变得更加困难。

于 2008-09-23T05:19:57.860 回答
1

遗留代码在许多地方被定义为“没有测试的代码”。我不认为它们在测试类型中是特定的,但总的来说,如果你不能在不担心发生未知事情的情况下对代码进行更改,那么它很快就会转移。

请参阅“有效使用遗留代码

于 2008-10-23T18:03:39.710 回答
0

我可能错了,但我认为没有一个既定的衡量标准。

通常一段代码被认为是遗留的,当它经历了至少 5-6 个发布周期(也许更多)。通常情况下,原始实现者不再存在,并且代码一直在维护。

于 2008-09-23T03:59:05.777 回答
0

开发人员离开场地后几乎几秒钟。:)

如果...

银行里没有钱购买新功能

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

你拥有的项目的源代码已经消失了

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

于 2008-09-23T04:03:42.927 回答
0

通常,当代码是遗留代码时,它会以不同的方式进行更改。人们害怕改变它,但改变往往是快速而肮脏的,因为没有人了解全部后果。可能会出现代码重复问题,因为人们不想承担与更深层次的更改相关的风险。

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

于 2008-09-23T08:41:27.483 回答
0

通常,当周围没有人熟悉或愿意维护代码时,人们将某些东西称为遗留代码。

单元测试使不熟悉代码的人更容易深入研究它,因此理论上它有助于防止代码成为“遗留”。

于 2008-09-23T06:16:43.947 回答
-1

我不知道有什么真正的指标可以用来确定某些东西是否是“遗留代码”,但是任何比刚刚编写的更早的东西都可以被认为是遗留的。遗留代码对不同的人/组织意味着不同的东西,所以它确实有点主观。

于 2008-09-23T04:00:12.590 回答