不恰当的亲密关系和特征嫉妒之间有什么区别?

时间:2014-04-26 13:49:47

标签: language-agnostic refactoring

这两种气味都在福勒的书“重构”中有描述。

我知道这些气味的含义是:

  • 功能羡慕是一个对象中的方法会在另一个对象上调用半打方法。
  • 不恰当的亲密关系是两个班级经常依赖彼此的私密部分。

看起来这两种气味都表明一个物体的一部分太多地依赖于另一个物体。

有人可以解释这两种气味之间的主要区别吗?

1 个答案:

答案 0 :(得分:13)

你描述得很好。

不恰当的亲密关系意味着妥协其他类的封装,例如直接访问不应直接访问的实例变量。很坏。修复抓取类只使用受感染类的公共功能,如果可能,更改受损类,以便其他类无法获取其私有功能。

功能Envy是指一个方法使用另一个类的公共特征而不是它自己的公共特征。没有那么糟糕,因为(假设其他类的公共功能可以安全使用),它不会导致错误。但它确实导致设计纠缠在两个类之间。通过向令人羡慕的类添加更高级别(更好抽象的)公共特性,或者将方法从羡慕的类移动到令人羡慕的类来修复,以便羡慕的类具有更少的调用方法。