在Visual Studio中计算代码度量指标

42
以下是代码度量计算中以下指标的首选分数范围:
- 可维护性指数:85至100之间 - 圈复杂度:1至15之间 - 继承深度:不超过5层 - 类耦合:不超过10个
2个回答

67

理论上的最佳值如下:

  • 可维护性指数:100。数值越高表示可维护性越好。
  • 圈复杂度:1。代码可以采用的不同路径数量。
  • 继承深度:1。在继承树中,该类定义之上的类定义数量,不包括接口。
  • 类耦合:0。依赖于此实体的其他实体数量。

虽然没有固定的“好”范围,但可能可以作出一些常规说明。

  • 具有高 per-method 圈复杂度表明方法变得过于复杂。
  • 继承深度超过大约 3 或 4(属于您自己的类,而不是框架的)是一个麻烦的迹象,这意味着您可能不必要地表示了软件域中不存在的抽象关系。
  • 低类耦合通常更好,但有时不可避免。在可能的情况下,您应该尽量减少命名空间之间的依赖关系,因为这里的原因要少得多。

项目只有同时达到所有四个值,才能基本上什么也没有做并且没有用处:什么也不做且不依赖于任何东西的软件肯定是可维护的,但不是客户资金的很好利用。

因此,所有复杂性都是权衡:所谓的 内在 复杂性将更多的复杂性编码到程序中,使其能够扩展功能集。您要避免的是由于不良或不足的实现引入的 意外 复杂性。


5
确实没有硬性的好范围。特别是如果你使用像表达式树或新的动态关键字这样的东西,你的类耦合度就会飙升。 - R. Martinho Fernandes

1
在过度依赖(或完全依赖)VS的可维护性指数之前,请查看以下页面,该页面提供了有关如何计算该指标的更多详细信息:https://avandeursen.com/2014/08/29/think-twice-before-using-the-maintainability-index/ VS的可维护性指数是一种验证不足的度量组合,它本身依赖于一个已被证明与代码可理解性(因此也不相关于可维护性)不相关的度量(圈复杂度)。请参见Scalabrino等人的“自动评估代码可理解性:我们有多远?”和https://shape-of-code.com/?s=cyclomatic+complexity
此外,该指标中使用的常量和函数选择未经过C#或VB代码校准,这进一步使其无用。
(这回答了原始问题,指出原始问题甚至不应该被问到。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接