如何降低此代码的McCabe Cyclomatic Complexity

时间:2017-09-17 15:02:14

标签: java cyclomatic-complexity

我有下面的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;
}

由于

1 个答案:

答案 0 :(得分:0)

如果授予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");
}