我在本系列前面的文章中已经解释了圈复杂性,它是令人讨厌的代码的一种先兆。
该图下面的部分指示出了一个方法的CheckStyle圈复杂度违规。
具有高圈复杂度值的测试方法几乎总是把事情弄得一团糟,无法轻易收场。
所以,在使用遗留代码库的情况下,测量圈复杂度特别有价值。
循环复杂性低的程序更容易理解,编辑起来风险也更小。
不过,圈复杂性并不是确定高风险代码的惟一复杂性度量。
一个好的经验法则是创建数量与将被测试代码的圈复杂度值相等的测试用例。
圈复杂度是在我前面提到的那些研究期间开创的,它可以精确地测量路径复杂度。
CheckStyle是另一个具有类似的圈复杂度规则的开放源码项目。
Cyclomatic复杂性是决定COBOL程序中稳定性及实效性程度的评价手段。
可维护性指数由三个度量合成:圈复杂度、代码行数和计算复杂性。
要确定条件复杂度代码味道,需要确定方法的圈复杂度。
Java开发人员可使用一些开放源码工具来报告圈复杂度。
在这里,有趣的是我们可以使用圈复杂度而不是使用代码覆盖率来找出这个缺陷。
而覆盖集的近似大小则被作为下限(n+1,等价于某个图的环复杂性)。
在代码层次,MauriceHalstead的软件规格和TomMcCabe的秩复杂度模型被广泛接受。
复杂度指示器主要是圈复杂数V和代码中的声明语句数。
圈复杂性公式(cyclomaticcomplexityformula),被ThomasMcCabe首先提出,它是基于一个函数的分支数量来确定复杂度的。
PMD是另一个分析Java源文件的开源项目,它有一系列的规则,其中之一就是报告圈复杂度。
圈复杂度是衡量一个方法相对于另一个方法的相对复杂度的指标。
一种可以度量Java语言圈复杂度的非常不错的开源工具就是JavaNCSS工具(见参考资料)。
该图显示了过去的3个关键度量:代码覆盖、圈复杂度和每个方法的圈复杂度。
本文主要讨论两个指标,圈复杂度(cyclomaticcomplexity)和传入耦合(afferentcoupling)。
ckjm报告的圈复杂度数字表示这个类中所有方法的复杂度之和。
我在“测试驱动设计,第2部分”中讨论过圈复杂度,但是有一些细节没有讨论。
1·SCORT can take different values for graphs with the same cyclomatic number.
对于具有相同圈数的图形,SCORT 可以采用不同的值。
2·I've explained in previous articles in this series that cyclomatic complexity tends to be one of the harbingers of sticky code.
我在 本系列前面的文章 中已经解释了圈复杂性,它是令人讨厌的代码的一种先兆。
3·The original method had a cyclomatic complexity of 43.
原始的方法的圈复杂度是 43。
4·Some of the common questions relating to cyclomatic complexity are "How does my code compare to others?" and "What is a good number for a particular class?"
与圈复杂度相关的常见问题包括 “我的代码与别人的代码相比怎么样?” 和 “对于一个类,多大的数值是合适的?”
5·Each of the former if blocks took 3 lines of code (and contributed 1 cyclomatic complexity point).
之前每个 if 块占用 3 行代码(并贡献了 1 个点的圈复杂度)。