工具濫用者(Tool Abusers)
軟體開發為我們提供了許多強大的工具:繼承、switch 語句和臨時欄位。但正如俗話說的,「如果你唯一的工具是錘子,你往往會把每個問題都看成釘子。」
「工具濫用者」(也稱為物件導向濫用者)是當開發者誤用原本有效的程式設計構造時發生的程式碼氣味。這些實作在技術上可以運作,但它們違反 了良好設計的原則——如多型、封裝和里氏替換原則。
繼承很棒,但如果你拒絕父類別一半的邏輯就不好了。Switch 語句是語言的一部分,但到處散布它們會使程式碼變得脆弱。
氣味列表
以下是這個類別中的經典氣味:
Switch 語句
你的程式碼中散布著複雜的 switch 或 if-else 序列。這通常是你應該使用多型的跡象。
拒絕遺贈
子類別從父類別繼承方法和資料,但只使用其中一部分。這就像繼承了一座豪宅但住在車庫裡。
介面不同的替代類別
兩個類別做相同的事情但有不同的方法名稱。這使它們難以互換。
臨時欄位
類別中的一個欄位只在特定情況下使用。其餘時間,它是空的或不相關的,讓任何試圖理解物件狀態的人感到困惑。
在這個部分,我們將看看如何正確利用物件導向原則來修復這些濫用 。