圣诞大减价开始了!

功能嫉妒

迹象和症状

方法访问另一个对象的数据多于访问它自己的数据。

问题的原因

在将字段移动到数据类之后,可能会出现这种气味。如果是这种情况,您可能也希望将对数据的操作移到该类中。

治疗

作为一个基本规则,如果事情同时发生变化,你应该让它们保持在同一个地方。通常数据和使用该数据的函数一起更改(尽管可能存在异常)。

  • 如果一个方法显然应该移动到另一个地方,使用移动方法

  • 如果一个方法只有一部分访问另一个对象的数据,则使用提取方法移动有问题的部件。

  • 如果一个方法使用了来自其他几个类的函数,首先确定哪个类包含了使用的大部分数据。然后将该方法与其他数据一起放在该类中。另外,使用提取方法将方法分成几个部分,这些部分可以放在不同类的不同位置。

回报

  • 更少的代码重复(如果数据处理代码放在一个中心位置)。

  • 更好的代码组织(处理数据的方法与实际数据相邻)。

何时忽略

  • 有时行为被有意地与保存数据的类分开。这样做的通常优点是能够动态地更改行为(参见策略游客以及其他模式)。
Baidu
map