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

Aula 6 - Validação e Conversão de dados

boa tarde. enquanto assistia o vídeo do professor explicando as validações, percebi que no inicio ele tinha conseguido fazer a validação com apenas a lógica que aplicou no if e logo após, falou que precisava melhorar o código no final da aula fórum criada classes estendidas, com método para inicializar, o método, da classes estendida da interface, isso pra mim parece uma complicação muito grande comparada ao if, ah duvida é, sempre usar essas ferramentas prontas que os frameworks nos disponibilizam é uma vantagem?.

há algum problema em "só " usar o if, porque ele mesmo fala que não tem como fugir do if, isso prejudica nossa aplicação?

ou o intuito do vídeo é apenas apresentar a ferramenta e não necessariamente sempre tenhamos que utiliza-la?

2 respostas
solução!

Fala Gabriel, tudo bem ?

Então no início da validação um if no próprio controller realmente parece fácil de escrever e inofensivo. Mas imagine o caso de validações mais densas, onde muitas informações tem que ser validadas, casos onde é preciso fazer verificações mais complexas buscando informações em bancos de dados, por exemplo. Tudo isso tornaria o código do controller mais complexo do que deveria. Além de ter o código de controle de fluxo da funcionalidade, o controller passa a ser o responsável por implementar a validação, gerando maior dificuldade de manutenção.

Uma ideia simples já seria apenas remover os ifs do controller e levá-los para uma classe específica pra validação. É exatamente essa a ideia apresentada, criamos uma classe de validação (ProdutoValidator) só que ja usamos o recurso do Spring Validator, implementamos uma interface e delegamos ao Spring a tarefa de aplicar as validações presentes na nossa classe.

O complexidade do código de fato aumenta, mas ganhamos em vários outros pontos, como facilidade de reaproveitamento de código, menor acoplamento entre as classes podendo contar com o container do spring pra gerenciar nossos objetos de validação, menor complexidade das actions dos controllers (sem os vários ifs), uso das classes Utils do Spring para as validações mais simples, e ainda podemos contar com a integração do framework com a Bean Validation.

O intuito de apresentar a técnica é mostrar uma boa prática, que em geral é recomendada ao escrever a aplicação. Não que seja uma obrigatoriedade utilizá-la, mas a solução com os ifs com o tempo pode prejudicar a implementação dos controllers.

Espero ter ajudado no pensamento. Abraço!

Tudo bom Rafael, ajudou sim obrigado