核心概念#
世界上充滿了大師和權威,都渴望傳授他們對於如何設計軟體的辛苦學來的智慧。
但作者們想解釋一件最近才變明顯的事情。
Tip 14 - Good Design Is Easier to Change Than Bad Design(好的設計比壞的設計更容易修改)
一樣東西如果能適應使用它的人,就是好設計。
對程式碼來說,適應意味透過改變來適應。
所以作者提出了 ETC 原則:Easier to Change。
所有設計原則都是 ETC 的特例#
據作者所知,所有的設計原則都是 ETC 的特殊案例:
| 設計原則 | 與 ETC 的關聯 |
|---|---|
| 解耦 | 透過隔離關注點,讓每個部分更容易修改 |
| 單一職責原則 | 需求改變只會反映在一個模組的改變 |
| 命名 | 好命名讓程式碼更易閱讀,而你須先閱讀才能修改 |
ETC 是一種價值觀,不是規則#
價值觀幫助你做決定:該做這個還是那個?
談到軟體思維時,ETC 是個指南,幫你在不同路徑間做選擇。
就像你其他價值觀,它應漂浮在你的意識思維後,微妙地推動你朝正確方向前進。
如何培養 ETC 意識#
需要一些初始的有意識強化。你可能需花一週,刻意問自己:
「我剛才做的事讓整體系統更容易還是更難修改?」
- 存檔時問自己
- 寫測試時問自己
- 修 bug 時問自己
當你不確定時#
有時你不知道哪條路未來會更容易修改。作者認為你可以做兩件事:
- 讓程式碼可替換:不確定未來的變化形式時,退而求其次走最終的「容易修改」路線——
讓你寫的東西可以被替換。這其實就是保持程式碼解耦和內聚 - 培養直覺:在工程日誌中記下情境、你的選擇、以及關於變化的猜測。
在原始碼中留下標記。之後當程式碼需修改時,可以回饋
本章其餘的章節都有關於設計的具體想法,但全都受這一個原則驅動。
相關章節#
- Topic 9,DRY–重複的罪惡
- Topic 10,正交性
- Topic 11,可逆性
- Topic 14,領域語言
- Topic 28,解耦
- Topic 30,轉換式程式設計
- Topic 31,繼承稅