Rajith Attapattu

重構前的思考#

每個程式設計師在某個時刻都需要重構現有程式碼。但在動手之前,請先思考以下幾點,這可以為你和他人省下大量時間與痛苦。

重構的核心原則#

  1. 先盤點現有程式碼與測試

    • 了解現有程式碼的優勢與弱點
    • 保留優點的同時避免重蹈覆轍
    • 我們都以為自己能做得更好——直到做出來才發現,和舊版一樣差(甚至更差)
  2. 抗拒全部重寫的誘惑

    • 盡量重用現有程式碼,不管它看起來多醜
    • 舊程式碼已經被測試、審查過,尤其是生產環境中的程式碼,可能包含多年累積的錯誤修復和變通方案
    • 忽略這些歷史,你可能會重新遇到那些已被修復的神秘 bug
  3. 漸進式變更優於一次性大改

    • 增量式的變更讓你更容易透過測試回饋來評估影響
    • 一次看到上百個測試失敗會令人沮喪,且容易做出糟糕的決定
    • 一次處理幾個測試失敗則容易得多
  4. 確保每次迭代後現有測試通過

    • 補充新測試來涵蓋你的變更
    • 不要輕易丟棄舊測試——表面上不適用的測試,值得深入了解其存在的原因

個人偏好和自尊不應成為重構的理由。 如果程式碼沒壞,不要因為風格或結構不合你意就去改它。「覺得自己能做得更好」也不是合理的理由。

常見的錯誤動機#

  • 新技術不是重構的充分理由:除非成本效益分析顯示新語言或框架能帶來顯著的功能、可維護性或生產力改善,否則最好維持原狀
  • 人會犯錯:重構後的程式碼不一定會比之前更好。作者親身經歷過數次失敗的重構嘗試——結果不漂亮,但這就是人性