language-agnostic - 什么是圈复杂度?

标签 language-agnostic architecture cyclomatic-complexity

我时常看到的一个术语是“圈复杂度”。在这里,我看到了一些关于“如何计算 X 语言的 CC”或“如何用最少的 CC 来完成 Y”的问题,但我不确定我是否真的理解它是什么。

关于NDepend Website ,我看到一个解释,基本上是“方法中的决策数量。每个 if、for、&& 等都会为 CC“分数”添加 +1)。真的是这样吗?如果是,为什么这很糟糕?我可以看到,人们可能希望将 if 语句的数量保持在相当低的水平,以使代码易于理解,但这真的就是一切吗?

或者有什么更深层次的概念吗?

最佳答案

我不知道更深层次的概念。我相信它通常是在可维护性指数的背景下考虑的。特定方法中的分支越多,维护该方法操作的心智模型(通常)就越困难。

具有较高圈复杂度的方法也更难在单元测试中获得完整的代码覆盖率。 (感谢Mark W!)

当然,这带来了可维护性的所有其他方面。错误/回归等的可能性。不过,核心概念非常简单。

关于language-agnostic - 什么是圈复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911637/

相关文章:

language-agnostic - 构建给定文本中最常用单词的 ASCII 图表

c# - ASP.NET Web 应用程序的推荐体系结构是什么?

javascript - 举起,玩耍!或 BlueEyes(带有一堆 Javascript 框架)

refactoring - 您维护的任何功能的最高圈复杂度是多少?你将如何重构它?

c# - 生产项目的代码指标(C#、Visual Studio)的常用值

language-agnostic - 程序员学习一门新语言的最佳方式是什么?

language-agnostic - 创建一种基本的编程语言 - 资源?

c - 查询处理 TAB 字符?

c# - 使用具有复杂过滤器语法的外部 API

sonarqube - 类的复杂性到底是什么