Desafio proposto pela Luri, a IA da Alura. Suponha que você esteja trabalhando em uma aplicação Java de uma loja, que tenha a seguinte classe:
public class Produto {
String nome;
double preco;
double descontoParaPix;
double pegaPrecoFinal(boolean pagamentoViaPix) {
if (pagamentoViaPix == true) {
double precoFinal = preco - descontoParaPix;
} else {
double precoFinal = preco;
}
}
}
O método pegaPrecoFinal realiza o cálculo do preço final do produto, levando em consideração se o pagamento será realizado via pix. No entanto, esse método foi definido de maneira incorreta.
Qual o problema do método pegaPrecoFinal?
Identifiquei os três problemas no método pegaPrecoFinal:
As variáveis
precoedescontoParaPixprecisam ter seus valores inicializados com 0, pois, caso contrário, elas podem conter valores aleatórios, o que pode levar a resultados inesperados.A comparação
pagamentoViaPix == trueé redundante, poispagamentoViaPixjá é um booleano. Você pode simplificar a condição paraif (pagamentoViaPix).O método
pegaPrecoFinalprecisa retornar o valor da variávelprecoFinalpara que o resultado do cálculo seja utilizado.
Veja o código :
public class Produto {
String nome;
double preco;
double descontoParaPix;
preco = 0 ;
descontoParaPix = 0;
double pegaPrecoFinal(boolean pagamentoViaPix) {
if (pagamentoViaPix) {
double precoFinal = preco - descontoParaPix;
} else {
double precoFinal = preco;
} return precoFinal;
}
}