Mic*_*tum 69 language-agnostic architecture cyclomatic-complexity
我不时看到的一个术语是"Cyclomatic Complexity".在这里,我看到了一些关于"如何计算语言X的CC"或"如何使用最小CC量来做Y"的问题,但我不确定我是否真的理解它是什么.
在NDepend网站上,我看到了一个解释基本上是"方法中的决策数量.每个if,for,&&等等都给CC增加+1"得分.)真的是吗?如果是,为什么是这很糟糕?我可以看到,人们可能希望保持if语句的数量相当低,以保持代码易于理解,但这真的是它的一切吗?
还是有一些更深层的概念呢?
Nir*_*ali 12
Cyclocmatic complexity = Number of decision points + 1
Run Code Online (Sandbox Code Playgroud)
决策点可能是你的条件语句,如if,if ... else,switch,for循环,while循环等.
下图描述了应用程序的类型.
Cyclomatic Complexity位于1 - 10被认为是正常应用
Cyclomatic Complexity在11 - 20中等应用
Cyclomatic Complexity位于21 - 50危险的应用程序
Cyclomatic Complexity超过50不稳定的应用程序
azh*_*lov 11
维基百科可能是您的朋友:圈复杂度的定义
基本上,你必须想象你的程序的控制流图,然后
复杂性(...)定义为:
Run Code Online (Sandbox Code Playgroud)M = E ? N + 2P哪里
- M =圈复杂度,
- E =图的边数
- N =图的节点数
- P =连接组件的数量
CC是一个概念,它试图捕捉程序的复杂程度以及在单个整数中测试程序的难度.
我听到的另一个有趣的观点是:
您的代码中缩进最大的位置应具有最高CC。这些通常是确保测试覆盖率的最重要领域,因为预计它们将更难以阅读/维护。正如其他答案所指出的那样,这些也是确保覆盖率的更困难的代码区域。