我时常看到的一个术语是“圈复杂度”。在这里,我看到了一些关于“如何计算 X 语言的 CC”或“如何用最少的 CC 来完成 Y”的问题,但我不确定我是否真的理解它是什么。
关于NDepend Website ,我看到一个解释,基本上是“方法中的决策数量。每个 if、for、&& 等都会为 CC“分数”添加 +1)。真的是这样吗?如果是,为什么这很糟糕?我可以看到,人们可能希望将 if 语句的数量保持在相当低的水平,以使代码易于理解,但这真的就是一切吗?
或者有什么更深层次的概念吗?
最佳答案
我不知道更深层次的概念。我相信它通常是在可维护性指数的背景下考虑的。特定方法中的分支越多,维护该方法操作的心智模型(通常)就越困难。
具有较高圈复杂度的方法也更难在单元测试中获得完整的代码覆盖率。 (感谢Mark W!)
当然,这带来了可维护性的所有其他方面。错误/回归等的可能性。不过,核心概念非常简单。
关于language-agnostic - 什么是圈复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911637/