本書談的就是一件事——複雜性

應對複雜性是軟體設計最重要的挑戰:它讓系統難以建造與維護,也常常讓系統變慢。

本書討論過的事#

  • 複雜性的根本成因:依賴與模糊
  • 辨識複雜性的紅旗:資訊洩漏、不必要的錯誤條件、太籠統的命名……
  • 創造簡單系統的高層概念:類別要深、要通用、把錯誤從定義中消除、把介面文件與實作文件分開……
  • 投資心態:產生簡單設計所需的觀念

短期成本#

所有這些建議都有副作用:在專案早期增加額外工作

若你還不習慣思考設計,速度會更慢,因為你要邊做邊學好設計手法。

如果你只在乎「現在能跑」,那麼花時間想設計就會變成阻擋你達成目標的雜事。

長期回報#

但若好設計是你的目標——這本書的觀念會讓寫程式變得更有趣

  • 設計是引人入勝的解謎:「怎麼用最簡單的結構解這個問題?
  • 嘗試多種方法本身就有趣
  • 找到既簡單又強大的方案是滿足感的來源
  • 乾淨、簡單、顯而易見的設計,是美的

投資回收很快#

  • 一開始仔細定義的模組,在後續被反覆重用時為你省時間
  • 半年前寫好的清楚文件,在你回頭加新功能時為你省時間
  • 磨練設計技藝本身也為自己付出代價:技巧成熟後,好設計幾乎不比快速骯髒設計更費時

雙倍紅利#

好設計者的回報:有更大比例的時間花在設計階段——這正是有趣的部分。

糟糕的設計者多半花時間在追複雜、脆弱程式碼裡的 bug。

提升設計能力 → 你不只能更快地交出更高品質的軟體,寫程式的過程本身也會變得更愉快