本文主要是介绍什么是Cyclomatic Complexity(圈复杂度),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。
下面这个实例中,单元测试的覆盖率可以达到100%,但是很容易发现这其中已经漏掉了一个NPE的测试用例。case1方法的圈复杂度为2,因此至少需要2个用例才能完全覆盖到其所有的可能情况。
//程序原代码,圈复杂度为 2
public String case1(int num) {
String string = null;
if (num == 1) {
string = "String";
}
return string.substring(0);
}
//上面代码的单元测试代码
public void testCase1(){
String test1 = case1(1);
}
圈复杂度主要与分支语句(if、else、,switch 等)的个数成正相关。当一段代码中含有较多的分支语句,其逻辑复杂程度就会增加。
圈复杂度的计算方法,可以参考这篇文章:http://blog.csdn.net/lg707415323/article/details/7790660
降低圈复杂度的方法,可以参考《控制圈复杂度:9种重构技术》
这篇关于什么是Cyclomatic Complexity(圈复杂度)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!