public class ReajusteService {
public void concederReajuste(Funcionario funcionario, Desempenho desempenho) {
if(desempenho == Desempenho.A_DESEJAR) {
BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.03"));
funcionario.reajustarSalario(reajuste);
} else if(desempenho == Desempenho.BOM) {
BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.15"));
funcionario.reajustarSalario(reajuste);
} else if(desempenho == Desempenho.OTIMO) {
BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.20"));
funcionario.reajustarSalario(reajuste);
}
}
}
Pensando num futuro, onde a empresa queira implementar outros tipos de Desempenho, como exemplo: RUIM, PESSIMO, EXCELENTE. Nosso método vai começar a ficar grande, pensar em desmembrar cada um desses desempenhos, criando uma interface com o método concederReajuste e criar uma classe para cada tipo de desempenho, e implementar cada um a sua maneira, e criar uma classe de teste para cada tipo de desempenho também, seria uma boa prática de desenvolvimento???