返回總目錄 九、Primitive Obsession(基本類型偏執) 這主要表現在過多的使用基本類型。 1、總是被放在一起的基本類型欄位,可以提煉一個類出來。 2、參數列中有基本類型數據,這個和第八個“壞味道”一樣,可以將參數提煉成對象。 3、如果你正在從數組中挑選數據,那麼將數組替換成對象。 十 ...
九、Primitive Obsession(基本類型偏執)
這主要表現在過多的使用基本類型。
1、總是被放在一起的基本類型欄位,可以提煉一個類出來。
2、參數列中有基本類型數據,這個和第八個“壞味道”一樣,可以將參數提煉成對象。
3、如果你正在從數組中挑選數據,那麼將數組替換成對象。
十、Switch Statements(switch驚悚現身)
面向對象的一個最明顯特征就是:少用switch...case...語句。從本質上講,switch語句的問題在於重覆。你常會發現,同樣的switch語句散佈於不同地點。
1、如果switch語句是根據類型碼進行選擇,那就考慮多態。
2、如果只是在單一函數中有些選擇事例,可以用明確的函數取代參數。
十一、Parallel Inheritance Hierarchies(平行繼承體系)
這種壞味道有兩種情況:
1、為某個類增加子類時,必須為另一個類增加子類
2、某個繼承體系類名首碼和另一個繼承體系類名首碼相同
消除這種重覆性的策略:一個繼承體系中的實例引用另一個繼承體系中的實例,然後遷移成員
十二、Lazy Class(冗贅類)
其實就是某個類沒有做那麼多工作或者無事可做。
1、如果父類和子類之間無太大差別,將它們合為一體。
2、某個類沒有做太多事。將這個類的所有特性搬移到另一個類中,然後移除原類。
十三、Speculative Generality(誇誇其談未來性)
1、企圖以各式各樣的鉤子和特殊情況來處理一些非必要的事情。
- 某個抽象類沒有太大作用,將父子類合併
- 不必要的委托,將這個類的所有特性搬移到另一個類中,然後移除原類。
- 函數的某些參數未用上,移除參數
- 函數名稱帶有多餘的抽象意味,重命名函數名
2、函數或類的唯一用戶是測試用例。
這種情況下請將這樣的函數或類連同測試用例一併刪除。
To Be Continued...