代码的坏味道(15)-Message Chains(过度耦合的消息链)

代码的坏味道(15)-Message Chains(过度耦合的消息链)
如果你看到用户向一个对象索求(request)另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象。。。。。。这就是 Message Chain。实际代码中你看到的可能是一长串getThis()或一长串临时变量。采取这种方式,意味客户将与查找过程中的航行结构(structure of navigation)紧密耦合。一旦对象间的关系发生任何变化,客户端就不得不作出相应修改。

这时候你应该使用 Hide Delegate(157)。你可以在 Message Chain的不同位置进行这种重构手法。理论上你可以重构 Message Chain上的任何一个对象,但这么做往往会把所有中介对象(intermediate object)都变成 Middle Man.通常更好的选择是:先观察 Message Chain最终得到的对象是用来干什么的,看看能否以 Extract Method(110)把使用该对象的代码提炼到一个独立函数中,再运用 Move Method(142)把这个函数推入 Message Chain。如果这条链上的某个对象有多位客户打算航行此航线的剩余部分,就加一个函数来做这件事。

你可能感兴趣的:(代码的坏味道(15)-Message Chains(过度耦合的消息链))