Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] Meu código:

let quantidadeDeLugaresNaPista = Number(document.getElementById('qtd-pista').textContent);
let quantidadeDeLugaresNoSuperior = Number(document.getElementById('qtd-superior').textContent);
let quantidadeDeLugaresNoInferior = Number(document.getElementById('qtd-inferior').textContent);

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

if (tipoDeLugar == 'pista') {
    quantidadeDeLugaresNaPista = processarCompra(quantidadeDesejada,quantidadeDeLugaresNaPista,'qtd-pista');
} else if (tipoDeLugar == 'superior') {
    quantidadeDeLugaresNoSuperior = processarCompra(quantidadeDesejada,quantidadeDeLugaresNoSuperior,'qtd-superior');
} else if (tipoDeLugar == 'inferior') {
    quantidadeDeLugaresNoInferior = processarCompra(quantidadeDesejada,quantidadeDeLugaresNoInferior,'qtd-inferior');
}

document.getElementById('qtd').value = '';

}

function verificarQuantidadeDisponivel (quantidadeSolicitada,quantidadeTipoDeCadeira) {
if (quantidadeSolicitada > quantidadeTipoDeCadeira || isNaN(quantidadeSolicitada) || quantidadeSolicitada <= 0){
return true;
} else {
return false;
}

}

function calcularAQuantidade(quantidadeTipoDeCadeira,quantidadeSolicitada){
return quantidadeTipoDeCadeira - quantidadeSolicitada;
}

function processarCompra (quantidadeSolicitada,quantidadeTipoDeCadeira,id){
if (verificarQuantidadeDisponivel(quantidadeSolicitada,quantidadeTipoDeCadeira)){
alert ('Quantidade Indisponível!');
return quantidadeTipoDeCadeira;
} else {
quantidadeTipoDeCadeira = calcularAQuantidade(quantidadeTipoDeCadeira,quantidadeSolicitada);
document.getElementById(id).textContent = ${quantidadeTipoDeCadeira};
return quantidadeTipoDeCadeira;
}
}

1 resposta

Seu código está muito bem estruturado, demonstrando uma boa aplicação de lógica e uma excelente divisão de responsabilidades. Você aplicou o princípio de funções de responsabilidade única de forma clara.

Aqui está uma análise detalhada dos pontos fortes, um pequeno erro de sintaxe encontrado e sugestões de melhoria.

Na linha do processarCompra, o template string está sem as crases:
Como está:

document.getElementById(id).textContent = ${quantidadeTipoDeCadeira};

Como deve ser:

document.getElementById(id).textContent = `${quantidadeTipoDeCadeira}`;

Sugestões de Melhoria e Refatoração:

  1. Evitar Variáveis Globais Soltas: Suas variáveis de quantidade estão no escopo global. Se outro script no mesmo site usar os mesmos nomes, haverá conflito. É melhor encapsular tudo em um objeto ou módulo.
  2. Nome de Função Confuso: A função verificarQuantidadeDisponivel retorna true quando a quantidade não está disponível. Isso pode confundir quem lê o código. O ideal é inverter a lógica ou mudar o nome para isQuantidadeInvalida.

Espero ter ajudado. Se sua dúvida foi sanada, marque este tópico como solucionado.

Bons estudos!