本書的第二部分是全書的核心,以 FAQ(常見問題) 的形式組織,每一章的標題就是 legacy code 工作中最常遇到的困境。
如何使用本部分#
每一章都針對一個特定的問題場景,你可以根據當前面臨的問題直接翻閱對應的章節。章節之間有大量的交叉引用,因為許多技術彼此相關。
涵蓋的問題場景#
- 時間壓力:沒有太多時間但必須做改變
- 建構延遲:每次改動都要等很久才能看到結果
- 新增功能:如何安全地加入新功能
- 測試困難:無法將類別或方法放入測試框架
- 影響分析:改了某處,該測試哪些方法
- 大範圍變更:需要在同一區域做大量修改
- 不知道寫什麼測試:面對未知程式碼如何建立測試
- 函式庫依賴:被第三方函式庫綁死
- 全是 API 呼叫:應用程式邏輯散落在 API 呼叫中
- 看不懂程式碼:不夠理解程式碼來做改變
- 缺乏架構:應用程式沒有清晰的結構
- 測試妨礙開發:測試程式碼反而成為絆腳石
- 非物件導向專案:程序式程式碼如何安全改變
- 巨型類別:類別太大且持續膨脹
- 重複程式碼:到處都在改相同的程式碼
- 怪物方法:需要改的方法巨大且無法測試
- 如何不破壞東西:確保改變不會引入 Bug
- 感到無助:面對龐大的 legacy code 感到絕望
這些章節描述的都是小步驟(Baby Steps)。它們不會讓你的設計變得理想或完美,但會讓設計比之前好一些、更容易維護一些。別讓「最好」成為「更好」的敵人。