代码改变世界

代码坏味道 - 耦合

2016-03-05 00:12  yoogo  阅读(346)  评论(0)    收藏  举报

耦合


Feature Envy

症状:

 方法访问其他类的对象的属性,而不是自己的。

 

成因:

最常见的问题就是由数据类引起的。

治疗:

多数时候,同时需要做出改变的code 应该在一起。

 

收益:

 


不合适的亲密

症状:

一个类有大量的访问另一个类的属性和方法,类之间的联系千丝万缕。

成因:

 

治疗:

变双向依赖为单向

单点接触

收益:

 


消息链

症状:

a.b().c().d()

有什么不好吗? 客户对这关系知道的太多了,修改关系就意味着修改所有客户。

成因:

 

治疗:

隐藏委托,变单点接触。a 通过b 找到c ,调用c 的方法,改成 a调用b 的方法。 

考虑是否可以把方法移动到客户端,客户自足。

收益:

减少依赖


中间人

症状:

一个类仅仅就是为了把行为委托给其他类,那它没有存在的必要。

成因:

过渡使用去除消息链的方法的结果;

治疗:

如果一个类的大多数方法都委托给其他类,那就移调中间人,采用消息链。 

收益:


不完整的库类  -- 

这也是 坏味道?

症状:

库不能满足需要,但它又是只读的。

成因:

 

治疗:

在本地添加一个方法,在库的基础上实现更多功能;

继承库的类

收益:

不用再实现一遍库里已经提供的代码