核心概念#

世界上充滿了大師和權威,都渴望傳授他們對於如何設計軟體的辛苦學來的智慧。
但作者們想解釋一件最近才變明顯的事情。

Tip 14 - Good Design Is Easier to Change Than Bad Design(好的設計比壞的設計更容易修改)

一樣東西如果能適應使用它的人,就是好設計。
對程式碼來說,適應意味透過改變來適應。
所以作者提出了 ETC 原則:Easier to Change

所有設計原則都是 ETC 的特例#

據作者所知,所有的設計原則都是 ETC 的特殊案例:

設計原則與 ETC 的關聯
解耦透過隔離關注點,讓每個部分更容易修改
單一職責原則需求改變只會反映在一個模組的改變
命名好命名讓程式碼更易閱讀,而你須先閱讀才能修改

ETC 是一種價值觀,不是規則#

價值觀幫助你做決定:該做這個還是那個?
談到軟體思維時,ETC 是個指南,幫你在不同路徑間做選擇。

就像你其他價值觀,它應漂浮在你的意識思維後,微妙地推動你朝正確方向前進。

如何培養 ETC 意識#

需要一些初始的有意識強化。你可能需花一週,刻意問自己:
「我剛才做的事讓整體系統更容易還是更難修改?」

  • 存檔時問自己
  • 寫測試時問自己
  • 修 bug 時問自己

當你不確定時#

有時你不知道哪條路未來會更容易修改。作者認為你可以做兩件事:

  1. 讓程式碼可替換:不確定未來的變化形式時,退而求其次走最終的「容易修改」路線——
    讓你寫的東西可以被替換。這其實就是保持程式碼解耦和內聚
  2. 培養直覺:在工程日誌中記下情境、你的選擇、以及關於變化的猜測。
    在原始碼中留下標記。之後當程式碼需修改時,可以回饋

本章其餘的章節都有關於設計的具體想法,但全都受這一個原則驅動。

相關章節#

  • Topic 9,DRY–重複的罪惡
  • Topic 10,正交性
  • Topic 11,可逆性
  • Topic 14,領域語言
  • Topic 28,解耦
  • Topic 30,轉換式程式設計
  • Topic 31,繼承稅