本書之前提到的各種保持代碼整潔的原則及方法,歸納起來只有簡單設計的四條。只要遵循這四條原則,設計就能變得簡單。
- 運行所有測試
- 不可重復
- 表達程序員的意圖
- 盡可能減少類和方法的數(shù)量
以上規(guī)則重要程度依次降低。
1. 運行所有測試
設計必須制造出如預期一般工作的系統(tǒng),這是首要因素。全面測試并持續(xù)通過所有測試的系統(tǒng),就是可測試的系統(tǒng)。
只要系統(tǒng)可測試,就會導向保持類短小且目的單一的設計方案。遵循SRP的類,測試起來較為簡單。測試編寫越多,就越能持續(xù)走向編寫較易測試的代碼。
緊耦合的代碼難以編寫測試。同樣,編寫測試越多,就越會遵循DIP之類規(guī)則,使用依賴注、接口和抽象等工具盡可能減少耦合。如此一來,設計就有長足進步。
2. 簡單設計規(guī)則2~4: 重構
有了測試,就能保持代碼和類的整潔,方法就是遞增式地重構代碼。測試消除了對清理代碼就會破壞代碼的恐懼。
重構過程,就可以應用有關優(yōu)秀軟件設計的一切知識。提升內(nèi)聚性,降低耦合度,切分關注面,模塊化系統(tǒng)性關注面,縮小函數(shù)和類的尺寸,選用更好的名稱,如此等等。這也是應用簡單設計后三條規(guī)則的地方:消除重復,保證表達力,盡可能減少類和方法的數(shù)量。
3. 不可重復
重復是擁有良好設計系統(tǒng)的大敵。它代表著額外的工作、額外的風險和額外且不必要的復雜度。
4. 表達力
容易理解的代碼更容易維護。
選用好名稱、保持函數(shù)和類尺寸短小、標準命名法、編寫良好的單元測試。
5. 盡可能少的類和方法
消除重復、代碼表達力和SRP等最基礎的概念也會被過度使用。為了保持類和函數(shù)短小,我們可能會造出太多的細小類和方法。所以這條規(guī)則也主張函數(shù)和類的數(shù)量要少。
我們的目標是在保持函數(shù)和類短小的同時,保持整個系統(tǒng)短小精悍。