Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Getters e Setters

Tenho uma dúvida acerca dos getters e setters, esses métodos devem sempre seguir o mesmo modelo? Por exemplo:

public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

Acima temos uma setAgencia padrão, onde apenas se seta o valor pelo método, minha dúvida é se nesta classe eu poderia adicionar mais coisas dentro, por exemplo uma validação utilizando este nome, ou isso não é uma boa prática de programação?

4 respostas

Bom dia Hélio, é aconselhável deixar tudo que for relativo ao modelo, por exemplo, a classe conta pode ter os getters e setter necessários para a aplicação e outro método referente a Conta que não seja get e set (como saca, deposita entre outros), desde que se encaixa a "uma conta tem" é uma boa prática sim

Olá Hélio! Sim, você pode adicionar outras coisas, como validações, por exemplo. No meu caso esse método ficou assim:

public void setAgencia(int agencia){
        if(agencia > 0)
            this.agencia = agencia;
        else System.out.println("Agencia inválida");
}
solução!

Bacana Leonardo! Essa é uma boa abordagem, mas só levantaria um detalhe... imagina que em outro ponto do nosso sistema podemos cadastrar agencia fora dessa regra(nesse caso não faria sentido pois não existe agencia negativa) mas a ideia que quero passar aqui é que se forçarmos uma validação no setter, estamos assumindo que essa validação ocorre para a aplicação inteira

Resumindo, depende do que você vai colocar dentro do setter. Se for programação defensiva como o exemplo que o Leonardo apontou, costuma ser uma boa prática. Mas como o Guilherme disse, até mesmo uma boa prática como programação defensiva pode não ser ideal dependendo do seu escopo, sendo mais interessante delegar para outro método/classe mais apropriada.

Então colocar mais coisas dentro do setter não é automaticamente uma boa/má prática mas pode se tornar dependendo do conteúdo.