Segue meu código abaixo.
Minha dúvida é: A melhor forma (boa prática, seja por performance ou outra convenção) de criar este programa seria com if-else ou com ifs separados? Não se preocupem com as regras de código a mais, como os cálculos automáticos, foi um b.
public class CalculoIR {
public static void main(String[] args) {
/* Base de cálculo (R$) x Alíquota (%)
Até 1.903,98 - 0%
De 1.903,99 até 2.826,65 - 7,5%
De 2.826,66 até 3.751,05 - 15%
De 3.751,06 até 4.664,68 - 22,5%
Acima de 4.664,68 - 27,5%
*/
double salario = 22050.0;
double baseDeCalculoEmRealDeSetePorcento = 1903.99;
double baseDeCalculoEmRealDeQuinzePorcento = 2826.66;
double baseDeCalculoEmRealDeVinteDoisPorcento = 3751.06;
double baseDeCalculoEmRealDeVinteSetePorcento = 4664.69;
int aliquotaDeZero = 0;
double aliquotaDeSete = 7.5;
double aliquotaDeQuinze = 15.0;
double aliquotaDeVinteDois = 22.5;
double aliquotaDeVinteSete = 27.5;
boolean descontoIRZero = salario < baseDeCalculoEmRealDeSetePorcento;
boolean descontoIRSete = salario >= baseDeCalculoEmRealDeSetePorcento && salario < baseDeCalculoEmRealDeQuinzePorcento;
boolean descontoIRQuinze = salario >= baseDeCalculoEmRealDeQuinzePorcento && salario < baseDeCalculoEmRealDeVinteDoisPorcento;
boolean descontoIRVinteDois = salario >= baseDeCalculoEmRealDeVinteDoisPorcento && salario < baseDeCalculoEmRealDeVinteSetePorcento;
boolean descontoIRVinteSete = salario >= baseDeCalculoEmRealDeVinteSetePorcento;
if(descontoIRZero == true){
System.out.println("Até 1.903,98, o IR é de " +
aliquotaDeZero + "%" +
" e será deduzido R$ " +
((salario * aliquotaDeZero) / 100) +
".");
}
if(descontoIRSete == true){
System.out.println("De 1.903,99 até 2.826,65, o IR é de 7,5%." +
aliquotaDeSete + "%" +
" e será deduzido R$ " +
((salario * aliquotaDeSete) / 100) +
".");
}
if(descontoIRQuinze == true){
System.out.println("De 2.826,66 até 3.751,05, o IR é de " +
aliquotaDeQuinze + "%" +
" e será deduzido R$ " +
((salario * aliquotaDeQuinze) / 100) +
".");
}
if(descontoIRVinteDois == true){
System.out.println("De 3.751,06 até 4.664,68, o IR é de " +
aliquotaDeVinteDois + "%" +
" e será deduzido R$ " +
((salario * aliquotaDeVinteDois) / 100) +
".");
}
if(descontoIRVinteSete == true){
System.out.println("Acima de 4.664,68, o IR é de " +
aliquotaDeVinteSete + "%" +
" e será deduzido R$ " +
((salario * aliquotaDeVinteSete) / 100) +
".");
}
}
}
Exemplo do instrutor com if-else:
double salario = 3300.0;
if(salario >= 1900.0 && salario <= 2800.0) {
System.out.println("A sua aliquota é de 7,5%");
System.out.println("Você pode deduzir até R$ 142");
} else if(salario >= 2800.01 && salario <= 3751.0) {
System.out.println("A sua aliquota é de 15%");
System.out.println("Você pode deduzir até R$ 350");
} else if(salario >= 3751.01 && salario <= 4664.0) {
System.out.println("A sua aliquota é de 22.5%");
System.out.println("Você pode deduzir até R$ 636");
}