- O problema original
O código original faz isso:
let porcentagemDesconto = 0;
if (quantidadeMilhas > 5000) {
porcentagemDesconto = porcentagemDesconto + 10;
}
if (quantidadeMilhas >= 30000) {
porcentagemDesconto = porcentagemDesconto + 20;
} else {
porcentagemDesconto = 0;
}
O que está errado aqui?
Quando a pessoa tem mais de 30.000 milhas, ela recebe 10% + 20% = 30%, o que não deveria acontecer.
Pessoas com exatamente 5.000 milhas ou menos não recebem desconto, o que está certo, mas a lógica fica confusa.
O else está zerando o desconto mesmo para quem deveria receber 10%.Qual é a regra correta de negócio?
Menos de 5.000 milhas: 0% de desconto
Entre 5.001 e 29.999 milhas: 10% de desconto
30.000 milhas ou mais: 20% de descontoComo aplicar essa regra corretamente?
Aqui está o código correto e claro:
let porcentagemDesconto = 0;
if (quantidadeMilhas >= 30000) {
porcentagemDesconto = 20;
} else {
if (quantidadeMilhas > 5000) {
porcentagemDesconto = 10;
}
}
- Por que isso funciona?
Primeiro, o código verifica se a pessoa tem 30.000 milhas ou mais. Se sim, ela ganha 20% de desconto.
Se não tiver, ele vai para o else e verifica se tem mais de 5.000 milhas. Se sim, ganha 10%.
Caso tenha 5.000 milhas ou menos, nenhuma das condições é verdadeira, então o desconto continua sendo 0% (valor inicial).