1
resposta

Como resolver o "setSalario" disfarçado?

O Rodrigo até comentou no vídeo que, embora tenhamos melhorado a coesão, ferimos o encapsulamento porque o método "atualizarSalario" pode ser chamado de qualquer lugar, com qualquer valor. Como poderíamos contornar isso? Seria ruim instanciar o validador dentro do atualizarSalario?

1 resposta

Oi Rafael,

Pois é, acaba sendo um problema difícil de resolver de uma maneira sem gerar impactos.

Talvez uma alternativa seria alterar a visibilidade do método atualizarSalario da classe Funcionario para package-private:

void atualizarSalario(BigDecimal novoSalario) {
    //codigo...
}

E alterar a estrutura de pacotes da aplicação, movendo a classe ReajusteService para o mesmo pacote da classe Funcionario, para que ela consiga enxergar o método atualizarSalario.

Assim dá para garantir que apenas as classe dentro desse pacote enxerguem o método atualizarSalario, impedindo que de fora ele seja chamado.

Perceba então como essa é uma discussão meio complexa, pois precisamos avaliar os tradeoffs de cada solução, para decidir qual delas será utilizada.

Bons estudos!