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

2015-08-10    分類:其他、程式設計開發、首頁精華5人評論發表於2015-08-10

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

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

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

此研究是由研究人員在斯里蘭卡完成,近期發表於國際週刊“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
英文原文:Study finds that refactoring doesn’t improve code quality
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章