【发布时间】:2018-02-05 08:31:10
【问题描述】:
有一个像这样的类,两个实例变量有两个getter:
class A
{
_fieldA;
_fieldB;
GetA()
GetB()
GetSpecialNumber(int a)
{
//calculation not requiring any fields
}
}
该类将被归类为完全缺乏凝聚力。但是,我相信在某些情况下需要这样的无状态对象,因此不应该应用内聚度量。或者这是一个错误的方法/想法? 事实是,除了本材料末尾提到的几个案例外,我从未读过低内聚力是好的:http://www.aivosto.com/project/help/pm-oo-cohesion.html
【问题讨论】:
-
我看到的是一个具有只读属性的 DTO。 DTO 有什么问题?
-
你在这里得到的并不是真正的方法,而是只读属性。所以不行。恕我直言,凝聚力指标在这里不适用。 (“不是真正的方法”= 它们不包含任何适用于字段的逻辑。)
-
@Fidor,对,那么可以说这些是对各个字段执行某些操作的方法。由于它们不能与另一个一起使用,因此内聚度为 0。
-
@user970696 不要过于关注指标。它们不是一成不变的。他们应该让您大致了解您的解决方案中发生了什么。如果您必须保持高凝聚力,那么您唯一能做的就是将该类
A分成两个类X和Y,它们只有一个字段 -
@EmrahSüngü 是的。我更想了解我提供的链接中的示例是否真的有效,以及在某些情况下低凝聚力是否真的是合理的。