我想知道是否存在类似于Robert Martin定义的包稳定性度量的度量,可以通过其不稳定性(I)度量来了解包何时应该或不应该依赖于另一个包:
Ca = Afferent Couplings
Ce = Efferent Couplings
I = Ce / (Ce+Ca)
但是对于类来说,不是在包内的类之间的传入和传出耦合,而是在其他包中的类;他们在同一个包中的类之间的传入和传出耦合(也许和/或其他包,我真的不知道),让一个人知道一个班级是否应该依赖另一个班级,由于'不稳定'。
编辑:据说不稳定性度量标准衡量改变的原因:不改变比率的原因,但现在我考虑一下,一个类应该只有一个改变的理由,这意味着如果存在类似的不稳定性指标,那么一个类'我会是0,但是,有些类确实'使用'其他类的对象实例,使它们依赖于这些类;但是我不确定这个,对此有何见解?
答案 0 :(得分:1)
传入和传出耦合是类的有效度量,可以计算类的不稳定性。您可以在类上使用不稳定性来确定在哪里专注于创建稳定或不稳定的类 - 但实际上这可能会导致一些糟糕的设计选择。
例如,不稳定组件应该具有尽可能少的依赖关系(传入耦合),而稳定类应该具有尽可能少的依赖关系(传递耦合)。在富域模型中,很可能具有双向关联 - 这意味着无论您的类是打算稳定还是不稳定,您都开始违反与度量标准关联的“规则”。请注意,在包/组件级别,不鼓励甚至禁止任何循环依赖。
您最好将精力集中在更大的组件上,即包或层。通常,您希望您的域模型应该是稳定的(当您更改域时,这样做是因为这代表了对域的实际更改,或者至少是您对域的理解)。更可能发生变化的事情,例如视觉元素和数据访问组件是不稳定的,并且依赖于域。