跳至主要内容

工具濫用者(Tool Abusers)

軟體開發為我們提供了許多強大的工具:繼承、switch 語句和臨時欄位。但正如俗話說的,「如果你唯一的工具是錘子,你往往會把每個問題都看成釘子。」

「工具濫用者」(也稱為物件導向濫用者)是當開發者誤用原本有效的程式設計構造時發生的程式碼氣味。這些實作在技術上可以運作,但它們違反了良好設計的原則——如多型、封裝和里氏替換原則。

繼承很棒,但如果你拒絕父類別一半的邏輯就不好了。Switch 語句是語言的一部分,但到處散布它們會使程式碼變得脆弱。

氣味列表

以下是這個類別中的經典氣味:

Switch 語句

你的程式碼中散布著複雜的 switchif-else 序列。這通常是你應該使用多型的跡象。

拒絕遺贈

子類別從父類別繼承方法和資料,但只使用其中一部分。這就像繼承了一座豪宅但住在車庫裡。

介面不同的替代類別

兩個類別做相同的事情但有不同的方法名稱。這使它們難以互換。

臨時欄位

類別中的一個欄位只在特定情況下使用。其餘時間,它是空的或不相關的,讓任何試圖理解物件狀態的人感到困惑。


在這個部分,我們將看看如何正確利用物件導向原則來修復這些濫用。