可维护性指数

11 maintainability code-complexity visual-studio

我发现维护性指数(MI)的推荐值如下:

  • 85以上:良好的可维护性
  • 65-85:适度可维护性
  • 65及以下:使用非常糟糕的代码(大的,未注释的,非结构化的)难以维护MI值甚至可能是负的

这些价值取决于技术吗?例如,对于大型机来说,70的值是好的,但对于Java来说难以维护吗?

可以使用独立于技术的相同尺度吗?

Ant*_*n K 13

这是关于可维护性指标值的含义的解释.

不久就是这样

MI = 171 - 5.2*ln(Halstead Volume) - 0.23*(Cyclomatic Complexity) - 16.2*ln(Lines of Code)
Run Code Online (Sandbox Code Playgroud)

缩放在0到100之间.

由于很容易看到,该指标可用于任何过程语言.

  • @RBT 这是相同的公式。您解开了“在 0 到 100 之间缩放”这句话。 (2认同)

ava*_*sen 7

65和85门槛来自1992/1994年引入可维护性指数的原始论文.

Visual Studio略微调整了指标(多次使用100/171),使其适合1-100的比例.Visual Studio使用10和20作为阈值.

一般来说,我不会认真对待这个指标及其阈值:另请参阅我的博客文章" 在使用可维护性指数之前考虑两次 ".


Ori*_*rds 0

这取决于“可维护性指数”的计算方式。在我看来,这不像是可以跨语言工作的东西,因为语言是如此不同。

对“每个函数的行数”进行简单比较似乎是合理的,但是当您尝试比较充满指针的 C 代码、充满模板的 C++ 代码、或带有 LINQ 查询的 C# 或带有 LINQ 查询的 Java 时,会发生什么?仿制药?
所有这些因素都会影响可维护性,但无法以任何有意义的跨语言方式进行衡量,因此如何比较两种语言之间的数字呢?

  • 特别是 Lambda 不由指标处理。每个 lambda 函数都会额外增加您的复杂性,尽管实际上它简化了代码。我们放弃了指标。 (2认同)