降低开关外壳的循环复杂性

Reducing cyclometric complexity of a switch case

提问人:Shakeeb Ayaz 提问时间:11/17/2023 更新时间:11/17/2023 访问量:25

问:

SonarQube说,该方法的循环复杂性太高。在这种情况下,如果无论如何都可以这样做,我需要消除代码中的所有警告。

对于上下文,代码应该根据所选选项执行任务

public void action(final char c) {
        switch (c) {
            case 'A':
                performA();
                break;
            case 'B':
                performB();
                break;
            case 'C':
                performC();
                break;
            case 'D':
                performD();
                break;
            case 'E':
                performE();
                break;
            case 'F':
                performF();
                break;
            case 'G':
               performG();
                break;
            case 'H':
                performH();
                break;
            case 'I':
                performI();
                break;
            case 'J':
                performJ();
                break;
            case 'K':
                performK();
                break;
            case 'L':
               performL();
                break;
            case 'M':
                performM();
                break;
            case 'N':
                performN();
                break;
            case 'O':
                performO();
                break;
        }
    }```


java sonarqube switch-statement

评论

3赞 Sweeper 11/17/2023
改用一个怎么样?Map<Character, Runnable>
4赞 Tim Roberts 11/17/2023
当McCabe发明圈复杂度时,语言没有“switch”语句。你的代码没有错。实际上,圈复杂度更像是一个激发讨论的概念,而不是需要严格遵守的概念。
0赞 Shakeeb Ayaz 11/17/2023
@Sweeper是的,我也这么想.让我看看我是否得到任何答案.否则我会和地图一起去
0赞 andreypc 11/20/2023
也可以使用 reflection @YourCustomAnnotation(trigger=“n”) void performN (){ ... }

答: 暂无答案