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
preco
edescontoParaPix
precisam 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, poispagamentoViaPix
já é um booleano. Você pode simplificar a condição paraif (pagamentoViaPix)
.O método
pegaPrecoFinal
precisa retornar o valor da variávelprecoFinal
para 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;
}
}