5
respostas

ValidacaoPeriodicamente

Essa classe não usa o parametro double reajuste, tem algum problema? Tipo, eu posso fazer isso em aplicação real? passar um parametor q n vou utilizar

@Override
public void verificacacao(Funcionario funcionario, double reajuste)  {     // -->>> Não está sendo utilizado.
        LocalDate dataAgora = LocalDate.now();
        LocalDate ultimoReajuste = funcionario.getDataUltimoReajuste();
        long tempoPassado = ChronoUnit.MONTHS.between(ultimoReajuste,dataAgora);
        if(tempoPassado<6){
        throw new MyException("O tempo de reajuste não pode ser inferior há 6 meses");    
        }
    }
5 respostas

Olá Victor, tudo bem?

O ideal é que se um parâmetro não está sendo utilizado dentro do método ele não seja passado como argumento

Mas o professor fez assim :( Eu copiei o código dele.

Oi Victor,

Nesse caso não vai ter como remover o parâmetro, pois ele vem está definido na interface. Acabou que nessa classe que implementa a interface o parâmetro não foi utilizado, mas isso não gera nenhum problema.

Bons estudos!

Rodrigo, isso foi uma coisa que me incomodou muito, eu ter o parametro na assinatura do método que não vou utilizar!

Pensamos em uma validação de registrar um usuário por exemplo, em uma das classes eu vou ter que utilizar o argumento String nome por exemplo, em outra classe vou ter que utilizar o double valor, em outra classe o boolean registrado... Então, independentemente da classe, como implementam a mesma interface eu terei que ter obrigatoriamente em todas as classes o método void validation(String nome, double valor, boolean registrado) por exemplo.

Mas tem classes de validação que não vou utilizar o double valor, a outra não vou utilizar o boolean, na outra n vou utilizar aquilo... isso foi algo que me incomodou, pois o atributo está na assinatura do método mas não está sendo utilizado.

Eu pensei em uma forma de melhorar isso. Eu criei uma classe, exemplo : RegisterUserArgs onde dentro dela terá double valor, String nome e boolean registrado. e na interface eu terei o método agora void validation(RegisterUserArgs args) aí agora dentro de cada classe que implementa a interface, eu só vou chamar o atributo que me interessa dentro daquela classe, agora não teremos mais esse problema do atributo ficar na assinatura do metodo de forma desnecessaria.

UM exemplo bem básico, por favor dê uma olhada, estou a muito tempo tentando RESOLVER essa arquitetura para ficar mais "FECHADINHA":

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Victor,

Sim, o jeito mais apropriado de lidar com isso é encapsulando os parâmetros em uma classe, conforme o seu exemplo mesmo :)