Good Code, Bad Code 封面

Good Code, Bad Code

👨‍💼: Tom Long
📅: September 7, 2021
Buy Now
📖:
本書由 Google 資深工程師 Tom Long 撰寫,透過大量實際案例和虛擬碼,系統性地介紹如何寫出高品質程式碼。全書分為三個部分:理論篇奠定程式碼品質的基礎概念(抽象層、契約、錯誤處理);實務篇深入六大支柱的具體技巧(可讀性、避免意外、防誤用、模組化、可重用性);單元測試篇涵蓋測試原則與實務。核心理念是:高品質程式碼短期多花一點心思,中長期能大幅加速開發並減少 Bug。
📘 深度概覽

作者背景#

Tom Long 為 Google 資深軟體工程師暨技術主管(Tech Lead),日常工作包括指導新進工程師與應屆畢業生建立專業的程式碼撰寫習慣。他將多年在 Google 內部培訓與程式碼審查中累積的實務經驗,系統化地整理為本書的教學框架,專注於幫助讀者從「能寫程式」提升到「寫出高品質程式碼」。

完整摘要#

《Good Code, Bad Code》要解決的核心問題是:許多開發者知道程式碼品質很重要,但缺乏系統性的框架來判斷什麼是好的程式碼、什麼是壞的程式碼,以及如何具體改善。作者的核心論點是,高品質程式碼短期多花一點心思,中長期能大幅加速開發並減少 Bug。

全書分為三個部分。理論篇奠定程式碼品質的基礎概念:首先定義高品質程式碼的四個目標與六大支柱,接著深入探討抽象層(Layers of Abstraction)的建構方法——如何透過函式、類別與介面建立乾淨的抽象;然後討論程式碼契約(Code Contracts)——透過前置條件、後置條件與不變式減少被誤用的風險;最後分析錯誤處理策略——可復原性分類、快速失敗原則,以及顯式與隱式錯誤信號的取捨。實務篇將六大支柱轉化為具體技巧:讓程式碼可讀(命名、註解、巢狀深度、magic number)、避免意外(避免 magic value 與非預期副作用)、讓程式碼不易被誤用(不可變性、Builder 模式、避免過度泛化的型別)、讓程式碼模組化(依賴注入、組合優於繼承)、讓程式碼可重用與可泛化(避免隱含假設與全域狀態)。單元測試篇涵蓋測試原則(準確偵測破壞、不耦合實作、清楚的失敗訊息)與實務(測試行為而非函式、Test Doubles 的使用時機、依賴注入提升可測試性),並延伸至整合測試與端對端測試的更廣泛視野。

本書的貢獻與定位#

《Good Code, Bad Code》的獨特貢獻在於以「六大支柱」框架將程式碼品質具體化、可操作化。相較於 Robert C. Martin 的《Clean Code》偏重原則與風格,本書以更多的虛擬碼對比(好程式碼 vs. 壞程式碼)幫助讀者直觀理解差異。相較於《Code Complete》的全面性,本書更聚焦於程式碼層級的品質提升,篇幅精簡且易於消化。特別適合入行一至三年、希望建立紮實程式碼品質觀念的軟體工程師。