一、圈复杂度

计算一个代码逻辑流程有多少分支,注重评估代码的可测试性。
java 代码直接统计有多少下面关键词

if, for, while, case, catch, throw, &&, `

二、认知复杂度

计算代码的复杂度,注重评估代码的可理解性。他本事是对圈复杂度的一种补充,所以统计方法类似,但是更加的细腻。

2.2 认知复杂度 vs 圈复杂度

举个列子说明认知复杂度的作用:以下2个代码的圈复杂度一样,但是代码的可理解程度却很明显的不同。
案例1:

int sumOfPrimes(int max) {                  // +1
    int total = 0;
    OUT: for (int i = 1; i <= max; ++i) {    // +1
        for (int j = 2; j < i; ++j) {        // +1
            if (i % j == 0) {                // +1
                continue OUT;
            }
    }
    total += i;
    }
    return total;
}                           // Cyclomatic Complexity 4

案例2:

String getWords(int number) { // +1
    switch (number) {
        case 1: // +1
            return "one";
        case 2: // +1
            return "a couple";
        case 3: // +1
            return “a few”;
    default:
    return "lots";
    }
}           // Cyclomatic Complexity 4

2.2 认知复杂度考核方法

  1. 忽略那些允许将多条语句简化为一条语句的结构
  2. 破坏代码线性流程的 +1,(一个线性流程是从左往右,从上往下)
  3. 流程终止的地方 +1

点赞(0) 打赏

Comment list 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部