1
resposta

UTILIZEI SWITCH AO INVÉS DE IF

Boa tarde!
Neste caso utillizei o switch ao invéz de IF. Sinto que posso facilitar ainda mais utilizando somente função, mas ainda não consegui estruturar em como faria a solução.

Depois de terminar meu código e ir olhar o vídeo do professor, ví que eu poderia ter simplificado na validação de ingressos disponíveis, apesar da forma que eu utilizei também ser funcional, a solução do professor foi mais limpa.

Com base no código abaixo, quais boas práticas eu deveria adotar para melhorar ?


let inferior = 400;
let superior = 200;
let pista = 100;

function comprar(){
    let tipoIngresso = document.getElementById('tipo-ingresso').value;
    let quantidadeCompra = document.getElementById('qtd').value;
    
    if (quantidadeCompra <= 0 || isNaN (quantidadeCompra)){
        alert('Favor digitar um número válido');
        document.getElementById('qtd').focus();
        return;
    }
 switch (tipoIngresso){
    
    case "pista":
        pista -= quantidadeCompra;
        if(pista < 0 ){
            alert("Não temos ingressos o suficiente");
            pista += quantidadeCompra;
        }else{
            document.getElementById('qtd-pista').textContent = pista;
            alert("Parabéns pela compra!")
        }
    break;

    case "superior":
        superior -= quantidadeCompra;
        if(superior < 0 ){
            alert("Não temos ingressos o suficiente");
            superior += quantidadeCompra;
        }else{
            document.getElementById('qtd-superior').textContent = superior;
            alert("Parabéns pela compra!");
        }
    break;

    case "inferior":
        inferior -= quantidadeCompra;
        if(inferior < 0 ){
            alert("Não temos ingressos o suficiente");
            inferior += quantidadeCompra;
        }else{
            document.getElementById('qtd-inferior').textContent = inferior;
            alert("Parabéns pela compra!");
        }
    break;
 }
   
}
1 resposta

Oi, Bruno! Como vai?

Do jeito que você explicou, foi bem legal ver você usando switch para organizar as opções de compra e já se preocupando com validação (como isNaN e quantidade <= 0). Isso mostra cuidado com o fluxo do usuário e deixa o código mais previsível.

Uma dica interessante para o futuro é reduzir repetição com um objeto que guarda os estoques e um id de cada tipo, deixando a atualização e a validação em um único lugar; isso ajuda na manutenção e na leitura. Veja este exemplo:


let ingressos = {
  pista: { qtd: 100, id: 'qtd-pista' },
  superior: { qtd: 200, id: 'qtd-superior' },
  inferior: { qtd: 400, id: 'qtd-inferior' }
};

function comprar() {
  let tipo = document.getElementById('tipo-ingresso').value;
  let qtd = parseInt(document.getElementById('qtd').value);

  if (qtd <= 0 || Number.isNaN(qtd)) {
    alert('Favor digitar um numero valido');
    document.getElementById('qtd').focus();
    return;
  }

  if (ingressos[tipo].qtd - qtd < 0) {
    alert('Nao temos ingressos o suficiente');
    return;
  }

  ingressos[tipo].qtd -= qtd;
  document.getElementById(ingressos[tipo].id).textContent = ingressos[tipo].qtd;
  alert('Parabens pela compra!');
}

Esse código sem acentuação centraliza as quantidades em ingressos, valida o número, verifica estoque, atualiza o valor e reflete na tela com textContent.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!