跳至主要内容

變更阻礙者(Change Preventers)

歡迎來到「變更阻礙者」類別。顧名思義,這些是使你的軟體抗拒變更的程式碼氣味。

當你試圖添加功能或修復 bug 時,你是否覺得自己在與程式碼戰鬥?你是否必須觸碰十幾個檔案才能改變一個簡單的標籤?或者你發現改變一個類別會破壞五個不相關的功能?如果是這樣,你很可能正在處理變更阻礙者。

「對於那些我們必須在做之前學習的事情,我們透過做來學習。」—— 亞里士多德

軟體應該是「軟」的——可塑且易於改變。這些氣味使你的程式碼庫變硬,使其變得脆弱且難以維護。

氣味列表

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

發散式變更

當一個類別因為許多不同的原因而被改變時發生。它違反了單一職責原則。

霰彈式修改

當單一變更需要你對許多不同的類別進行許多小編輯時發生。它是發散式變更的反面。

平行繼承層級

當每次你為一個類別創建子類別時,你也必須為另一個類別創建子類別時發生。

組合爆炸

當類別層級因為試圖使用繼承來涵蓋獨立功能的每種組合而導致大小爆炸時發生。


在這個部分,我們將詳細探討每種氣味,了解它們為什麼會發生,並學習如何重構它們以使你的程式碼更容易改變。