Refatoração em Java: early return na prática
![Refatoração em Java: early return na prática](https://www.alura.com.br/artigos/assets/code/quanto-mais-simples-melhor.1722045630.png)
Quero calcular o imposto de um investimento. A regra é simples:
Se o saldo for maior que mil reais, pagamos 10 porcento de taxa. Se o saldo for maior que 500 até exatos 1000, o imposto é 5%. Caso o saldo seja menor ou igual a 500, o imposto é 1%.
Me diz em 5 segundos se a implementação a seguir está correta?
![Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!](assets/alura-matricula-maior-escola-tecnologia-brasil-mais-500-mil-estudantes/matricula-escola-programacao-alura-saiba-mais-versao-mobile.png)
double calculaImposto() {
double taxa = 0;
if(saldo > 1000) { taxa = 0.1; }
else {
if(saldo > 500) { taxa = 0.05; }
else { taxa = 0.01; }
}
return saldo * taxa;
}
Para uma regra de três condições, algo tão simples... conseguimos complicar horrores na hora de implementar. Imagine em regras do mundo real, ainda mais complexas?
Complicado né? Que tal retornarmos logo?
double calculaImposto() {
if(saldo > 1000) return 0.1 * saldo;
if(saldo > 500) {
return 0.05 * saldo;
}
return 0.01 * saldo; }
Agora sim, em 5 segundos bate o olho no código, ooooutra história! Os elses desaparecem...
Esse é o retorno rápido, o early return.
Se eu quero retornar um valor, retorno poxa! Esse é um pequeno exemplo do poder da refatoração.