程式碼重構 - 基本概念
系列 - Code-Refactor
目錄
重構:在不影響程式碼邏輯的前提下進行程式碼修改的行為
重構行為應使用 IDE 隨附的重構命令處理,以降低人為操作的錯誤,且盡可能在進行重構前加入測試,避免重構後發生錯誤。
本文記錄我過往經驗中,對於重構的一些想法與概念,也有在上課後老師所提供的想法。
程式碼重構的基本概念
1 在重構之前
如果架構允許,應替重構目標加入測試,以避免重構後的功能邏輯與重構前不同的問題。 若對外部類別的依賴過高,導致無法加入測試,則應優先處理依賴問題,解依賴後立即加入測試。
2 基本的重構 - 整理程式碼
移除不必要的程式碼
- 未使用的成員
- 執行不到的程式碼
- 過多的程式註解
- 舊版寫法的保留方式其實可以靠版控,不需要全部留在程式碼內影響判讀
- 為何使用某種寫法的說明盡可能精簡,或者讓他變成方法或類別的說明,不建議在程式區段中間加入過多的說明資訊
- 可以靠著 IDE 的建議功能調整寫法,除了藉機學習各種新寫法之外,還可以挑一種在團隊間容易溝通的寫法來使用
- 若情況允許,建議安裝 JetBrains 出品的擴充套件或使用該廠商的 IDE,或使用其他類似功能的擴充
修正命名
- 修正錯字
- 修正命名以符合團隊規範或使用的開發語言習慣
- 更正方法名稱以用於釐清用途
處理魔術數字
將寫死的文字或數字改為變數或常數,以利於後續作業判斷
處理前
//這邊我們並不清楚 1 這個數字所代表的含意,必須額外查表 if (input == 1) { //do something }
處理後
//把 1 拉出來變成變數,並設定一個名稱,可以快速的理解判斷式的目的 var userUnit = 1; if (input == userUnit) { //do something }
尋找重複 -> 移除重複
- 抽出行為方法 -> 確認行為是否相同 -> 整合重複的方法
Tips: 不見得所有的重複都必須處理,應該是要依據該區塊的行為去決定這個重複是否應被處理。有時候,適當的保留重複可以方便後續的調整。
確認邏輯並凸顯意圖
修正 Code Smell