Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Sobre a validação de atributos no próprio construtor

Parte da minha dúvida já foi respondida em um tópico anterior, que era saber se validações diretamente no construtor é uma boa prática.

Com isso, a duvida que me resta é saber se seria melhor (boa prática ou ao menos melhora na legibilidade) colocar a lógica de validação em um método e o construtor fazer a chamada dele?

Exemplo utilizado na aula:

    public Email(String endereco) {

        if(endereco == null || !endereco.matches("[expressão regex]")) {

            throw new IllegalArgumentException("Email inválido.");

        }

        this.endereco = endereco;

    }

Exemplo refatorado:

    public Email(String endereco) {

        this.isEmailValido(endereco);

        this.endereco = endereco;

    }

    private boolean isEmailValido(String endereco) {

        if(endereco == null || !endereco.matches("[expressão regex]")) {

            throw new IllegalArgumentException("Email inválido.");

        }

        return true;

    }

No caso da classe Email, estamos fazendo a validação de apenas um campo mas, se tivessemos multiplos campos que precisassem de validação, colocar todas esssas lógicas no construtor poderia trazer problemas de manutenção no futuro, correto?

1 resposta
solução!

Fala André, beleza ? Cara, acho super válida esse sua ideia, eu faria dessa forma também, colocaria em um método e chamaria o método no construtor, até poque podemos reutilizar esse método outras vezes... Agora também tem um ponto que depende, se você for apenas utilizar essa lógica nessa classe apenas, eu deixaria dentro do construtor, pq vc não vai utiliza-la em mais nenhum lugar... Mas no geral, eu faria por método tbm...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software