Avaliação de condicionais

\(\newcommand\Id[1]{\mbox{\textit{#1}}}\)

Abaixo estão padrões comuns de erros e ineficiências em estruturas condicionais, apresentados de forma independente de linguagem e focados em pseudocódigo.


1. Condições Redundantes

Erro: Verificar a mesma condição ou uma condição que já foi descartada anteriormente.

se x > 10 então
    faça algo
senão se x > 10 então
    faça outra coisa  // Redundante: já foi descartado

2. Condições Sempre Verdadeiras ou Falsas

Erro: Condições que são logicamente inúteis.

se verdadeiro então
    faça algo  // Executado sempre, desnecessário
se x > 5 ou x <= 5 então
    faça algo  // Sempre verdadeiro, a condição é inútil

3. Encadeamento Excessivo de se-senão (deep nesting)

Ineficiente: Muitos níveis de decisão tornam o código difícil de ler e manter.

se condição1 então
    se condição2 então
        se condição3 então
            faça algo  // Difícil de ler

Melhoria:

se não condição1 então
    saia
se não condição2 então
    saia
se condição3 então
    faça algo

4. Condições Invertidas ou Confusas

Erro: Tornar o código difícil de entender por causa da lógica negativa.

se não (x > 10) então
    faça A
senão
    faça B

Melhoria:

se x <= 10 então
    faça A
senão
    faça B

5. Comparação Desnecessária com Valores Literais

Erro: Comparar valores booleanos com verdadeiro ou falso.

se (x == verdadeiro) então
    faça algo

Melhoria:

se x então
    faça algo

6. Código Repetido em Blocos Condicionais

Erro: Repetir as mesmas instruções em vários ramos.

se x > 10 então
    log("x é grande")
    faça A
senão
    log("x é grande")
    faça B

Melhoria:

log("x é grande")
se x > 10 então
    faça A
senão
    faça B

7. Condições Sobrepostas (overlapping)

Erro: Ramas que nunca são executados porque a lógica anterior já cobre os casos.

se x > 10 então
    faça A
senão se x > 5 então
    faça B
senão se x > 8 então
    faça C  // Nunca será executado!

8. Uso Indevido de senão sem se claro

Erro: Ambiguidade ou lógica errada quando senão depende de outro se mal posicionado.


9. Falta de Caso Padrão (senão)

Erro: Ignorar casos não tratados.

se x == 1 então
    faça A
se x == 2 então
    faça B
// E se x == 3?

Melhoria:

se x == 1 então
    faça A
senão se x == 2 então
    faça B
senão
    trate o caso padrão

10. Lógica Complexa Não Separada em Funções

Erro: Toda a lógica de decisão em um só bloco, sem abstrações.

Melhoria: Use funções ou sub-rotinas para melhorar a legibilidade:

se cliente_é_vip(x) então
    aplicar_desconto(x)