跳至主要内容

耦合者(Couplers)

「耦合者」是代表類別之間過度耦合的程式碼氣味。耦合是衡量兩個模組連接緊密程度的指標。如果它們耦合太緊,改變一個就需要改變另一個。

把你的程式碼想像成一個音響系統。在一個好的系統中,你可以拔掉喇叭並插入新的,因為連接(介面)是標準且簡單的。在一個糟糕的系統中(「耦合的」),喇叭線直接焊接到主機板上。你不能升級喇叭而不買一個新的擴大機。

當類別太親密、彼此知道太多,或羨慕彼此的資料時,你的系統就會變得僵硬且脆弱。

氣味列表

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

功能羨慕

一個方法似乎對另一個類別比它實際所在的類別更感興趣。它羨慕另一個類別的資料。

不當親密

類別花太多時間在一起,存取彼此的私有部分。子類別對其父類別知道太多也是這種情況的一種形式。

訊息鏈

經典的 a.getB().getC().doSomething()。客戶端與導航的結構耦合。

中間人

訊息鏈的反面。一個類別做太多簡單的委派,充當一個沒有增加價值的包裝器。

不雅暴露

本應是私有的類別或方法卻是公開的。它在不應該有耦合的地方邀請耦合。


在這個部分,我們將看看如何解開這些關係並恢復物件的健康邊界。