耦合者(Couplers)
「耦合者」是代表類別之間過度耦合的程式碼氣味。耦合是衡量兩個模組連接緊密程度的指標。如果它們耦合太緊,改變一個就需要改變另一個。
把你的程式碼想像成一個音響系統。在一個好的系統中,你可以拔掉喇叭並插入新的,因為連接(介面)是標準且簡單的。在一個糟糕的系統中(「耦合的」),喇叭線直接焊接到主機板上。你不能升級喇叭而不買一個新的擴大機。
當類別太親密、彼此知道太多,或羨慕彼此的資料時,你的系統就會變得僵硬且脆弱。
氣味列表
以下是這個類別中的經典氣味:
功能羨慕
一個方法似乎對另一個類別比它實際所在的類別更感興趣。它羨慕另一個類別的資料。
不當親密
類別花太多時間在一起,存取彼此的私有部分。子類別對其父類別知道太多也是這種情況的一種形式。
訊息鏈
經典的 a.getB().getC().doSomething()。客戶端與導航的結構耦合。
中間人
訊息鏈的反面。一個類別做太多簡單的委派,充當一個沒有增加價值的包裝器。