概述#

這本書的目標是幫助你透過程式碼傳達意圖。全書架構如下:

章節內容
第 2-4 章程式設計與模式(Pattern)的概觀
第 5-8 章一系列短文,探討如何運用 Java 的特性撰寫可讀的程式碼
最後一章針對框架(Framework)開發的調整建議

全書始終聚焦於提升溝通效果的程式設計技巧

透過程式碼溝通的三個步驟#

作者描述了學會透過程式碼溝通的三個關鍵步驟:

  1. 有意識地編程:停止假裝自己是憑直覺寫程式,放慢速度去察覺自己在想什麼。作者在寫了多年程式後才驚訝地發現,雖然程式決策對他來說很順暢,但他無法解釋為何一個方法該叫某個名字、或某段邏輯該放在某個物件裡。
  2. 重視他人:程式設計幾乎從來不是一個人與一台機器的獨自交流。在撰寫有溝通力的程式碼之前,必須相信其他人和自己同等重要。關心他人是一個有意識的決定,也需要練習。
  3. 在實踐中體現:運用實作模式(Implementation Pattern)來有意識地為他人(也為自己)編程。

閱讀建議#

本書可以從不同角度來閱讀:

  • 純技術角度:直接翻閱模式章節,獲取有用的技巧與解釋
  • 即時學習法(Just-in-Time):直接跳到第 5 章快速瀏覽到結尾,然後在編程時將本書放在手邊。使用過許多模式後,再回頭閱讀前幾章的哲學背景
  • 完整閱讀:從頭到尾直接讀完,但各章節篇幅較長,需要專注力

模式的本質#

程式設計中的大多數決策都與之前的決策相似:

  • 你的職業生涯中可能會命名一百萬個變數,但不會每次都用全新的方式
  • 命名的通用約束始終相同:傳達用途型別生命週期,且名稱要易讀、易寫、易排版
  • 這就是模式(Pattern)的範例:決策和約束反覆出現,即使每次產生的結果不同

本書包含 77 個明確命名的模式,每個都涵蓋撰寫可讀程式碼的某個面向。此外還有許多較小的模式或變體散見於各處。

模式的呈現方式不拘一格——有時是論述文章、有時是圖表、有時是教學故事、有時是範例——依照最適合該模式的方式來描述。

本書的定位#

本書介於 Design PatternsJava 語言手冊之間:

書籍定位
Design Patterns談的是每天可能做幾次的決策,通常是規範物件之間互動的決策
Implementation Patterns每隔幾秒鐘就會用到的模式
語言手冊擅長描述 Java「能做什麼」,但不太談「為什麼」要使用某種語法結構,或讀者可能從中得出什麼結論

本書不涵蓋的範圍#

主題說明
並行處理(Concurrency)作者的策略是盡量隔離應用程式的並行部分,推薦參考《Java Concurrency in Practice》
軟體流程(Software Process)本書的建議適用於任何流程,無論是長週期開發還是在失敗測試後立即編寫的程式碼
Java 的邊緣特性作者傾向保守的技術選擇,書中呈現的是 Java 的常用子集

導覽指南(Tour Guide)#

本書分為七大部分:

部分英文說明
導論Introduction描述透過程式碼溝通的重要性與價值,以及模式背後的哲學
類別Class描述如何及為何建立類別,以及類別如何編碼邏輯
狀態State儲存與擷取狀態的模式
行為Behavior表達邏輯(特別是替代路徑)的模式
方法Method撰寫方法的模式,提醒你讀者會從方法分解與命名中得出什麼結論
集合Collections選擇與使用集合的模式
演進中的框架Evolving Frameworks在建構框架而非應用程式時,對前述模式的變體

Figure 1.1: Book overview

接下來#

如果你想直接瀏覽模式本身,可以從第 5 章開始。祝你實作愉快!