是否有内聚和耦合度量?


Answers:


29

我认为您正在寻找的指标是LCOM4,尽管它更适用于类。

声纳在这里很好地解释

... metric:LCOM4(缺乏内聚方法),用于衡量内聚类的程度。解释该指标非常简单,因为值1表示一个类仅具有一个职责(良好),值X表示一个类可能具有X个职责(不良),应进行重构/拆分。

这里没有任何魔术,只有常识。让我们以Driver类为例。此类具有两个字段:Car和Brain,以及五个方法:drive(),goTo(),stop(),getAngry()和DrinkCoffee()。这是这些组件之间的依赖关系图。由于存在三个相关组件块,因此LCOM4 = 3,因此该类似乎具有三个不同的职责,并且违反了单一职责原则。 http://i.stack.imgur.com/2527G.png

...

如果可以使用的话,这是一个很棒的工具。:)


@OnorioCatenacci没问题。:)
Oleksi 2012年

太糟糕了,他们没有考虑如何计算指标。
Onorio Catenacci 2012年


出于好奇,您将如何重构该图以遵循“单一责任原则”?brain.setAngry(driver)car.applyBreaks(driver)
Phil

我怀疑基于代码的内聚度量标准是否真的可以指示接口级内聚性,甚至可能促进不良编程:mortoray.com/2015/04/29/…–
edA-qa mort-ora-y

16
  • 传入耦合:职责数量
  • 传出耦合:依赖性数量
  • 不稳定性:传出耦合与总耦合的比率(传出+传出)。

各种代码度量工具均支持不稳定性。


谢谢@Brian-正是我希望找到的那种东西。
Onorio Catenacci
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.