【问题标题】:How do I reduce the McCabe Cyclomatic Complexity of this code如何降低此代码的 McCabe 循环复杂度
【发布时间】:2017-09-17 15:02:14
【问题描述】:

我有下面的java。这是从菜单中调用的,用户在其中输入与选项相对应的数字(opcaoMenu),并根据该选项调用方法。此代码的圈复杂度为 8,我想降低它,但我不知道如何。

private static EstruturaStack decisaoMenu(EstruturaStack topoStack, int opcaoMenu) {
    if (opcaoMenu == 1) {
        topoStack = empilharChapa(topoStack);
    }
    if (opcaoMenu == 2) {
        consultarTodasChapas(topoStack);
    }
    if (opcaoMenu == 3) {
        topoStack = empilhar(topoStack);
    }
    if (opcaoMenu == 4) {
        topoStack = esvaziarPatio(topoStack);
    }
    if (opcaoMenu == 5) {
        verificarQuantidade(topoStack);
    }
    if (opcaoMenu == 6) {
        filtrarPorPedido(topoStack);
    }
    if (opcaoMenu == 7) {
        exibirMensagem("MENSAGEM DO PROGRAMA:\n\nOpção em desenvolvimento!", "Mensagem do Programa");
    }
    return topoStack;
}

谢谢

【问题讨论】:

    标签: java cyclomatic-complexity


    【解决方案1】:

    如果允许 opcaoMenu 始终在 1..7 范围内,那么您可以使用 if-else 复合来缓解最后一个 if。这会将复杂度降低 1。

    if (opcaoMenu == 1) {
        topoStack = empilharChapa(topoStack);
    }
    else if (opcaoMenu == 2) {
        consultarTodasChapas(topoStack);
    }
    else if (opcaoMenu == 3) {
        topoStack = empilhar(topoStack);
    }
    else if (opcaoMenu == 4) {
        topoStack = esvaziarPatio(topoStack);
    }
    else if (opcaoMenu == 5) {
        verificarQuantidade(topoStack);
    }
    else if (opcaoMenu == 6) {
        filtrarPorPedido(topoStack);
    }
    else {
        exibirMensagem("MENSAGEM DO PROGRAMA:\n\nOpção em desenvolvimento!", "Mensagem do Programa");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多