2008-09-23 98 views

回答

12

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

+1

一个程序员修炼之我见这里。 – 2008-09-23 08:36:22

1

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

5

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

+0

嗯...所以根据这个,今天开发的40%的代码是遗留代码? – AviD 2008-09-23 05:27:02

+0

是的。根据Feathers的说法,如果没有进行单元测试,它会在编写代码时成为遗留代码。 – 2008-09-23 06:21:36

+0

哦,加油!是的,单元测试很重要,但是这个定义太过分了。遗产意味着过时。没有测试的代码没有过时,这只是在**** – Treb 2009-02-24 09:10:34

0

我可能是错的,但我不认为有一个确定的指标。

通常一段代码被认为是遗留的,当它看到至少5-6个发布周期(可能更多)。通常情况下,原来的执行者不在身边,代码通过维护。

-1

我不知道任何可用于确定是否是“遗留代码”的实际度量标准,但是比刚刚编写的任何东西都可以被认为是遗留的。遗留代码对不同的人/组织来说意味着不同的事情,所以它确实有点主观。

8

如果代码:

  1. 已取代实现相同或功能或更好
  2. 没有使用当前系统更新的代码
  3. 很快被别的完全的东西所取代
  4. 已被封存于历史原因
  5. 当供应商停止支持它
4

我不相信有一个确定的答案,但我确实认为代码是遗留代码的可能性随着不想触摸它的人数增加以及改变它的可能性会导致它打破。

0

开发者离开房屋几乎几秒钟。 :)

如果...

有没有钱存在银行新功能

你找不到任何人坦言工作的项目,需要固定

源代码您拥有的项目已经失效MIA

...那么您正在处理遗留代码。

0
  • 当代码足够老时,您从未遇到最初编写代码的开发人员。
  • 当第三方库不再受支持时。
5

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

对我而言,传统意味着不可改变。所以只要你不再能够改变它,它就是遗产。

能力是否被固定需求所消除,害怕破碎,知识丧失或其他影响在很大程度上是无关紧要的。

一个相关的说明是,我不认为我会使用遗留下来的确切单词,因为它激起了太多的情绪,是有用的。

6

我们使用术语“传统”是指任何代码,仍然在使用,使用技术,我们已经停止了活跃的发展而发展。

这是代码,我们宁愿重写使用较新的工具比修改其当前状态。

1

在我看来,所有编写的代码都是遗留代码。可能需要一些时间才能将原始意图和关于代码的所有决定都遗忘,但迟早你无法想象他们在写作时想到的是什么。你从不编写遗留代码,对吧?

使用单元测试或自开发人员离开建筑物之类的某些度量(如秒)并不真正衡量代码是否为遗留代码。遗留代码可能有一套很好的单元测试和评论,它可能已经过严格的代码审查和其他分析。这并不意味着代码对于手头的程序仍然是相关的。它只是表明代码可能写得相当好。如果它不再相关,代码实际上会使解决程序开发的问题变得更加困难。

0

当没有人熟悉或熟悉维护代码时,通常人们会将其称为遗留代码。

单元测试使不熟悉代码的人可以更容易地深入其中,因此理论有助于防止代码成为“遗留”代码。

0

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

所以,在这种情况下,情况可能会变得更糟,在增加速度。

1

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

请参阅 “Working Effectively with Legacy Code