2009-12-09 26 views
0

想象一下你有一個程序,例如在Java 1.4或C#1.0中。當然,這個程序不會使用隨後版本中引入的泛型和其他語言功能。何時將現有程序升級到新的語言功能?

現在需要進行一些不重要的更改。當然,你已經有了一個更新的IDE /編譯器,所以你可以使用Java 1.6或者更高版本。改爲C#3.5。你會使用這個oppurtunity升級到最新的語言功能,即使用通用容器和擺脫許多演員,等等。或者你會保持它原樣,並使用新的功能只適用於新的部分。或者甚至保持原版使用的版本的功能,以保持一致性水平?

回答

3

這只是一個refactoring具體形式,所以對何時以及如何做到這一點適用於所有的advice。這裏

0

這取決於。它是否需要由舊編譯器編譯?你有足夠的時間/金錢來改變一切嗎?

+0

一般的假設是,它不需要由舊編譯器編譯。 – 2009-12-09 13:02:21

4

我對代碼維護基本的規則:如果沒壞,就不要修。

+0

如果它壞了,改變規格。 – 2009-12-09 13:10:28

1

儘可能只留下工作代碼。看起來代碼應該都使用最新的編程祕訣,但對於久經考驗的代碼還有很多需要說明的地方。

我只會考慮重寫必須在任何情況下,大量修改代碼,添加新的功能,即使在那時,我只會改變編程比喻,如果將加快新功能的文字。

否則,你會不斷地調試這是以前工作的代碼,並使用新的能量,可能已經進入提高了產品。

3

一種考慮是你的現在和未來,以吸引和留住開發商與過時的技術構建的應用程序進行維護和支持的能力。許多經驗豐富的開發人員在最新版本的Java和C#上工作時,他們是最新的,所以並不是我們沒有經驗。但是,如果我們花費在.Net 1.0中工作一年,我們會忘記我們現在知道的後續版本。儘管我們在那一年用舊技術工作,但我們所有的朋友和競爭對手都在用最新的技術磨練他們的技能。我們永遠無法使這一年。

除了落後,我們會發現它強烈的沮喪不能夠在以後的版本,我們現在使用的舒適使用的功能。

所以,年輕的開發將不會在舊的技術有經驗(.NET 1.0在2002年1月發佈)。老年開發者一直在那裏,不想回去。

在另一方面,如果你留在後面的舊版本,你會坦然面對你的技能。您不必花費大量時間學習更新的技術。也許最重要的是,你會有工作保障。

0

理論上,這是成本和收益之間的簡單平衡,所以如果收益超過成本,您只應該重寫。

但問題是,它幾乎無法測出的實際成本(不只是做的工作,但不可能有助於更多其他的東西)。一般來說,這些好處根本無法衡量 - 您只能猜測如果您使用舊代碼將會遇到多少困難。

這讓我們很少有機會根據合理的測量值做任何事情。這留下了一個簡單的經驗法則:只留下舊代碼,直到你唯一的選擇是重寫它或完全放棄它。

相關問題