🎯 什麼情境該想到我

當你「看到一串連續的取值呼叫,像 a.getB().getC().getD() 一路點下去」的時候——呼叫端被迫知道整條物件導覽路徑的內部結構。

⚙️ 怎麼用(步驟 / 公式)

這味道是什麼徵兆:訊息鏈讓呼叫端緊緊耦合到物件之間的導覽結構——鏈中任何一環的關係改變,呼叫端就得跟著改。它洩漏了太多內部結構的細節。

通常用哪些重構手法對治:

  • 隱藏委託關係(Hide Delegate):在鏈的前端物件上開一個方法,替呼叫端把後面的委託關係藏起來,呼叫端只需認識第一個物件。
  • 提煉函式 + 搬移函式(Extract Function + Move Function):把「用這串鏈算出來的東西」抽成一個函式,再把它搬到鏈上更靠近資料的地方。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 別為了消滅每一個點號而把大量委託方法轉進中間物件,那會走向「中間人」味道——要拿捏。
  • 流暢介面(fluent API)刻意的鏈式呼叫不是此味道。

🔗 相關工具