Refactoring: Improving the Design of Existing Code 封面

Refactoring: Improving the Design of Existing Code

👨‍💼: Martin Fowler
📅: November 20, 2018
Buy Now
📖:
重構技術的權威指南,以系統化的手法目錄指導開發者改善既有程式碼的設計。
📘 深度概覽

作者背景#

Martin Fowler 是軟體工程領域最具影響力的作者與實踐者之一,長期擔任 ThoughtWorks 首席科學家。他在物件導向設計、企業應用架構、敏捷方法論等領域均有深遠貢獻,是敏捷宣言的共同起草人。本書第二版以 JavaScript 取代了第一版(1999 年)的 Java 範例,反映了二十年來程式語言生態的變遷,但重構的核心原則保持不變。Fowler 在 refactoring.com 上持續更新重構手法的線上目錄。

完整摘要#

本書探討的核心問題是:如何在不改變程式碼外在行為的前提下,系統性地改善其內部結構?Fowler 以一個完整的範例開篇,展示重構的實際流程——由一連串微小且獨立的變動組成,每一步都保持程式碼可運作。接著從原則層面定義重構(名詞:不改變外在行為的結構調整;動詞:應用一系列特定手法重新架構軟體),闡述其四大效益:改善架構設計、提高可理解性、幫助發現缺陷、提升開發速度。書中以「壞味道」(Bad Smells)作為識別需要重構之處的啟發式指引,包括重複程式碼、過長函式、過大類別、過長參數列表等二十餘種常見症狀。核心部分是按主題組織的重構手法目錄,涵蓋基礎重構(Extract Function、Inline Function 等)、封裝、搬移功能、組織資料、簡化條件邏輯、重構 API、以及處理繼承等類別。每個手法都包含動機說明、具體步驟與範例程式碼。全書強調重構應與測試緊密結合,並將重構視為日常開發活動的一部分而非獨立的維護工作。

本書的貢獻與定位#

《Refactoring》(重構:改善既有程式碼的設計)是軟體工程領域的經典之作,它將原本零散的程式碼改善技巧系統化為一套可學習、可重複的手法目錄,並深刻影響了現代 IDE 的自動重構功能設計。本書與 Kent Beck 的《Test-Driven Development》構成互補——TDD 確保行為正確,重構確保結構清晰。適合所有希望持續改善程式碼品質的開發者,無論使用何種程式語言。