首页/开发/代码质量与评审速查/坏味道:过长的消息链(Message Chains)
重构手法62 条

坏味道:过长的消息链(Message Chains)

a.getB().getC().getD() 这类链条让调用方耦合于整条对象图:用 Hide Delegate 封装转发,或对调用方引入更贴近意图的方法;链条每多一环,改动波及面更大。

信号连续多个 getter、调用方熟悉中间对象结构
手法Hide Delegate、Extract Function
注意迪米特法则的现实权衡

封装方向

封装方向
// 之前
manager.department().leader().name()

// 之后
manager.leaderName()

易错点

  • 封装成大量转发方法:中间人坏味道随之而来
  • 链条本身是传输对象结构(DTO):强行隐藏反而绕路

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Message Chains)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌