2008-09-23 79 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