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?