重構真的能提高代碼質量嗎?

jopen 9年前發布 | 6K 次閱讀 代碼

重構真的能提高代碼質量嗎?

英文原文:Study finds that refactoring doesn’t improve code quality

與傳統觀點相反,新的研究發現,想要為了更高效和更具可維護性,而去重組軟件代碼,我們所花的時間和精力并不一定是值得的。

重構軟件,也就是,重組現有的源代碼,以使其更高效,更具可讀性和可維護性,這可能是所有開發人員時不時在做的一件事情。當然,重構背后隱含的 假設是,將來的收益——可節省的人力物力,要能大于現在投入的成本——所耗費的時間和努力。然而,新的實驗研究表明,情況可能并不像你想像得那樣美好,重 構或許并不能大幅度地改善軟件代碼質量,有時候甚至是完全沒有起到一點改善作用。

此研究是由研究人員在斯里蘭卡完成,近期發表于國際周刊“International Journal of Software Engineering & Applications”上,題目為《An Empirical Evaluation of Impact of Refactoring On Internal and External Measures of Code Quality》。目的是測試常見的重構技術是否真的可以改進外部(例如,代碼是不是更易于維護?)和內部(例如,代碼行數)兩個方面的軟件質量。

研究人員選擇了一個小型的應用程序(約 4500 行 C# 代碼),原先是 Kelaniya 大學的教學人員用于制定日程計劃和管理在線文檔的應用程序。然后在其代碼上實施 10 種常見的重構技術(例如,用子類替換類型碼,用多態替換條件語句)。

為了衡量重構對外部軟件質量的效果,研究人員從 Kelaniya 大學,挑了一些懂得面向對象編程和 C# 的計算機專業的學生。其中一半學生通過可分析性和可變性評價了重構后的代碼,而另一半則去評估未重構的代碼。

運行每個代碼庫 1000 次然后平均結果,來分別衡量重構和非重構代碼的執行時間和資源利用。

使用 Visual Studio 分別計算重構和非重構內部代碼的軟件質量。這些指標是:可維護性指數、時間復雜度、繼承深度、類耦合,以及代碼行。

下面是這些研究人員得出的主要結論:

  • 重構并不能使得代碼更易于分析
  • 重構并不能使得代碼更容易改變
  • 重構代碼并不能使得代碼跑得更快
  • 重構代碼不會導致資源利用降低

唯一的利好是,有證據表明,重構過的代碼的確更易于維護

不過,上述研究結果依然待驗證,因為試驗對象是一個小樣本——一個小型的應用程序和固定的重構技術組。所以,就目前而言,此結果還是別用到實際工作上的好。

-

譯文鏈接:http://www.codeceo.com/article/refactor-and-code-qulity.html

翻譯作者:碼農網 – 小峰

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!