Bom dia a todos
Estava revisando a matéria e tava dando uma olhada e percebi que o código do Enum Desempenho
estava mal otimizado:
public enum Desempenho {
A_DESEJAR {
@Override
public BigDecimal percentualReajuste() {
return new BigDecimal("0.03");
}
},
BOM {
@Override
public BigDecimal percentualReajuste() {
return new BigDecimal("0.15");
}
},
OTIMO {
@Override
public BigDecimal percentualReajuste() {
return new BigDecimal("0.2");
}
};
public abstract BigDecimal percentualReajuste();
}
Se eu colocasse um atributo para armazenar o valor de percentual de reajuste, o construtor para colocar o valor entre parênteses junto com os Enum, poderia fazer o métodopercentualReajuste()
apenas 1 vez e os Enum A_DESEJAR
, BOM
e OTIMO
armazenariam apenas os valores, e o código ficaria assim:
package br.com.alura.tdd.service;
import java.math.BigDecimal;
public enum Desempenho {
A_DESEJAR(new BigDecimal("0.03")), BOM(new BigDecimal("0.15")),
OTIMO(new BigDecimal("0.2"));
private BigDecimal valor;
Desempenho(BigDecimal valor) {
this.valor = valor;
}
public BigDecimal percentualReajuste() {
return valor;
};
}
Fiz todos os testes no Junit e deram certos, com isso, se precisar refatorar o método percentualReajuste()
só preciso fazer 1 vez, ao invés de 3. E os Enum ficaram mais fáceis de visualizar o que armazenam