程式碼重構 - 基本概念

系列 - Code-Refactor

重構:在不影響程式碼邏輯的前提下進行程式碼修改的行為

重構行為應使用 IDE 隨附的重構命令處理,以降低人為操作的錯誤,且盡可能在進行重構前加入測試,避免重構後發生錯誤。

本文記錄我過往經驗中,對於重構的一些想法與概念,也有在上課後老師所提供的想法。

程式碼重構的基本概念

如果架構允許,應替重構目標加入測試,以避免重構後的功能邏輯與重構前不同的問題。 若對外部類別的依賴過高,導致無法加入測試,則應優先處理依賴問題,解依賴後立即加入測試。

  1. 移除不必要的程式碼

    • 未使用的成員
    • 執行不到的程式碼
    • 過多的程式註解
      • 舊版寫法的保留方式其實可以靠版控,不需要全部留在程式碼內影響判讀
      • 為何使用某種寫法的說明盡可能精簡,或者讓他變成方法或類別的說明,不建議在程式區段中間加入過多的說明資訊
    • 可以靠著 IDE 的建議功能調整寫法,除了藉機學習各種新寫法之外,還可以挑一種在團隊間容易溝通的寫法來使用
      • 若情況允許,建議安裝 JetBrains 出品的擴充套件或使用該廠商的 IDE,或使用其他類似功能的擴充
  2. 修正命名

    • 修正錯字
    • 修正命名以符合團隊規範或使用的開發語言習慣
    • 更正方法名稱以用於釐清用途
  3. 處理魔術數字

    • 將寫死的文字或數字改為變數或常數,以利於後續作業判斷

      處理前

      cs

      //這邊我們並不清楚 1 這個數字所代表的含意,必須額外查表
      if (input == 1)
      {
          //do something
      }

      處理後

      cs

      //把 1 拉出來變成變數,並設定一個名稱,可以快速的理解判斷式的目的
      var userUnit = 1;
      if (input == userUnit)
      {
          //do something
      }
  4. 尋找重複 -> 移除重複

    • 抽出行為方法 -> 確認行為是否相同 -> 整合重複的方法

    Tips: 不見得所有的重複都必須處理,應該是要依據該區塊的行為去決定這個重複是否應被處理。有時候,適當的保留重複可以方便後續的調整。

  5. 確認邏輯並凸顯意圖

  6. 修正 Code Smell

相關內容