Validando condições com `switch`/`case`

Controle de Fluxo / Tutorial JavaScript

O comando switch é usado para simplificar o controle de fluxo quando há várias condições possíveis baseadas no valor de uma variável. Ele é uma alternativa ao uso de múltiplos blocos if/else-if.

Sintaxe básica

A sintaxe básica do switch é a seguinte:

switch (expressao) {
    case valor1:
        // Código executado se expressao === valor1
        break
    case valor2:
        // Código executado se expressao === valor2
        break
    default:
        // Código executado se nenhum dos casos for atendido
}

Exemplo:

let dia = 3

switch (dia) {
    case 1:
        console.log("Segunda-feira")
        break
    case 2:
        console.log("Terça-feira")
        break
    case 3:
        console.log("Quarta-feira")
        break
    default:
        console.log("Dia inválido")
}

Saída:

Quarta-feira

Evitando o uso de switch

Embora o switch seja útil em muitos casos, ele pode tornar o código mais difícil de manter, especialmente quando há muitos casos ou quando as condições são complexas. Além disso, ele não é tão flexível quanto outras abordagens, como objetos ou arrays.

Por que evitar o switch?

  1. Dificuldade de manutenção: Um switch com muitos casos pode se tornar longo e difícil de ler.
  2. Falta de flexibilidade: O switch funciona apenas com valores fixos, como números ou strings, e não permite condições mais complexas.
  3. Propenso a erros: Esquecer o break pode causar comportamentos inesperados.

Alternativa com objetos

Em vez de usar switch, você pode usar um objeto para mapear valores a funções ou resultados.

Exemplo:

let dia = 3

const diasDaSemana = {
    1: "Segunda-feira",
    2: "Terça-feira",
    3: "Quarta-feira",
    4: "Quinta-feira",
    5: "Sexta-feira",
    6: "Sábado",
    7: "Domingo"
}

console.log(diasDaSemana[dia])

Saída:

Quarta-feira

Alternativa com arrays

Se os valores forem sequenciais, você pode usar um array.

Exemplo:

let dia = 3

const diasDaSemana = [
    "Dia inválido", // índice 0
    "Segunda-feira",
    "Terça-feira",
    "Quarta-feira",
    "Quinta-feira",
    "Sexta-feira",
    "Sábado",
    "Domingo"
]

console.log(diasDaSemana[dia])

Saída:

Quarta-feira

Quando usar switch

Apesar das alternativas, o switch ainda é útil em casos simples, especialmente quando há poucos valores fixos a serem tratados. No entanto, para cenários mais complexos, considere as alternativas acima para manter o código mais limpo e flexível.

Usando múltiplos casos para o mesmo bloco de código

Você pode agrupar vários casos que compartilham o mesmo comportamento.

Exemplo:

let fruta = "maçã"

switch (fruta) {
    case "maçã":
    case "banana":
    case "laranja":
        console.log("Essa fruta está disponível.")
        break
    default:
        console.log("Essa fruta não está disponível.")
}

Saída:

Essa fruta está disponível.

O papel do break

O comando break é usado para interromper a execução do switch. Sem ele, o código continuará executando os casos subsequentes, mesmo que a condição já tenha sido atendida.

Exemplo sem break:

let cor = "verde"

switch (cor) {
    case "vermelho":
        console.log("Pare!")
    case "amarelo":
        console.log("Atenção!")
    case "verde":
        console.log("Siga!")
}

Saída:

Siga!

Exemplo corrigido com break:

let cor = "verde"

switch (cor) {
    case "vermelho":
        console.log("Pare!")
        break
    case "amarelo":
        console.log("Atenção!")
        break
    case "verde":
        console.log("Siga!")
        break
}

Saída:

Siga!

Boas práticas

  1. Sempre use break: Evite comportamentos inesperados ao esquecer o break em um caso.
  2. Use default: Sempre inclua um caso default para tratar valores não previstos.
  3. Prefira switch para valores fixos: Use switch quando as condições forem baseadas em valores fixos, como números ou strings.

Com o switch, você pode organizar seu código de forma mais clara e eficiente quando há múltiplas condições baseadas em valores. Experimente usá-lo para simplificar seus fluxos de controle!