重構真的能提高程式碼質量嗎?
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
與傳統觀點相反,新的研究發現,想要為了更高效和更具可維護性,而去重組軟體程式碼,我們所花的時間和精力並不一定是值得的。
重構軟體,也就是,重組現有的原始碼,以使其更高效,更具可讀性和可維護性,這可能是所有開發人員時不時在做的一件事情。當然,重構背後隱含的假設是,將來的收益——可節省的人力物力,要能大於現在投入的成本——所耗費的時間和努力。然而,新的實驗研究表明,情況可能並不像你想像得那樣美好,重構或許並不能大幅度地改善軟體程式碼質量,有時候甚至是完全沒有起到一點改善作用。
此研究是由研究人員在斯里蘭卡完成,近期發表於國際週刊“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
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 如何做好質量管理、提高研發的程式碼質量?
- 如何提高Java程式碼質量-優雅的寫程式碼Java
- 程式碼重構之道:消滅冗長的if語句,提升程式碼質量
- 快而髒的程式碼真的能更快推向市場嗎?
- 如何透過靜態分析提高iOS程式碼質量iOS
- 小程式真的能幫商家掙到錢嗎
- 掌握TypeScript:10個最佳實踐提高程式碼質量.mdTypeScript
- 有哪些可以提高程式碼質量的書籍推薦?
- 良好的編碼習慣 —— 5 個提高程式碼質量的技巧
- 文章質量檢測工具怎麼提高文章質量?提高質量有什麼方法?
- IT真的是萬能的嗎?
- 萬字長文詳解如何使用Swift提高程式碼質量Swift
- 在Java中使用函式正規化提高程式碼質量Java函式
- 提高程式碼質量——使用Jest和Sinon給已有的程式碼新增單元測試
- 程式碼重構之法——方法重構分析
- Sonar程式碼質量管理
- 重構 PHP 程式碼PHP
- “硬核”程式碼重構
- 開發好能重構的程式碼,都是這麼幹的
- 前端註釋那些事兒:看懂這篇,提高程式碼質量So easy前端
- 程式碼的組合和程式碼版權和質量,真的蠻機車惹,不是吧阿sir!
- 人工智慧真的“萬能”嗎?人工智慧
- 你真的使用過低程式碼產品嗎?
- 扎心!天天寫程式碼,方向真的對嗎?
- 【直播回顧】戰碼先鋒第六期:共建測試子系統,賦能開發者提高程式碼質量
- 前端程式碼質量管理(一)前端
- Facebook如何提高軟體質量
- 如何提高Sprint Review的質量?View
- 談談程式碼重構
- 程式碼重構技巧(二)
- 【讀程式碼重構有感】
- 怎麼提高程式碼質量?-來自Google的研發經驗總結Go
- 程式碼重構:類重構的 8 個小技巧
- 做亞馬遜真的能掙錢嗎?亞馬遜
- 程式碼質量-開閉原則
- 前端程式碼質量優化交流前端優化
- android 程式碼質量檢查工具Android
- 程式碼質量第 4 層 - 健壯的程式碼
- 何為程式碼質量?——用腦子寫程式碼