Duvida sobre validação de dados

4 respostas
R

Boa tarde galera. Estou a pouco tempo na area de programação, entao ainda tnh duvidas derrepente ate simples. Esses dias quando estava programando surgiu uma duvida enquanto eu criava os getters e setters. Resumindo, eu devo colocar validação em todos os meus metodos setters para evitar erros, como atribuição de um valor negativo ou uma divisão por 0, ou devo confiar e deixar a validação para ser feita na interface do usuario? estou com essa duvida pq a validação em cada metodo setter pode tornar o codigo mais lento, porem deixar por conta da interface do usuario pode causar erros devido o esquecimento ou validação com falha. qual o mais recomendado?

obrigado

4 Respostas

asandrob

Bah, faço minha a tua dúvida.
Estou desemvolvendo um pequeno cadastro para aplicar tudo o que já aprendi até agora e essa dúvida vem “martelando” na minha cabeça.
Eu estou fazendo assim:
Criei uma classe RegraNegocioException.
No Controle antes de persistir, no caso do método salvar(entidade), eu faço as validações e gero as Exceptions deixando o método como trows RegraNegocioException, mas é na view que eu faço o try/catch.

Não sei se é a melhor prática, mais funciona bem em um projeto pequeno…

Jeferson_Manetti

iaew galera…

essa eh uma duvida muita xata, rsss

pelo q eu aprendi nesse tempo programando OO em Java e que toda modelagem tem que levar em conta a complexibilidade da aplicação…

e aquela velha historia de tentar matar um mosquito com uma bazuca…

A OO tradicional mais conservadora ve q colocar esse tipo de validação nos setter é “legal” pois previne erros… porem qse ninguem faz esse tipo de coisa… preferem fazer essas validações na camada de negocios… ou seja, entre a tela e o setter tem um cara no meio que garante q os dados atribuidos nos setter são vdd… no caso de frameworks como JSF… bem ai e outra estoria pq ele faz o binding e utliza os criterios de validação dos campos definidos na pagina… bem essa e outra estoria =)

Pelo q pude perceber no desenv. web o conceito de MVC e muito forte eles repeitam muito isso…
logo, View apenas exibi os dados… model e o lugar q são colocadas as regras de negocios e o controle o cara q faz a ligação entre a view e o model… portanto e dificil vc encontrar um try catch na view… geralmente o try catch ficaria no controle q manipularia a exception e devolveria uma msg “camarada” para a view exibi-la…

um exemplo… vc recebeu o famoso nullpointerexception na sua regra de negocio… dai ele subiu pro controler… ele n pode passar essa exception para view… ele trata ela e devolve para view… tipo… “Houve um erro ao validar cadastro de alunos” e usuario jamais vai conhecer um nullpointerexception… entenderam…

eu costumo comparar o MVC assim a View representa o “usuario”, Controler a “logica de controle de funcionalidade” e o Model a “regra de
negocio da app”

geralmente utilizamos camadas em app web… tipo aqui eu uso… View(jsp) >>> controler(framework) >>> Model (regra de negocio)…
qnd eu clico em consultar…
View >>> Operação >>> ServiceProvider >>> ServiceFactory >>> ClassenegocioImpl >>> DaoFactory >>> DAO >>> BD

putz escrevi uma carta… acho q dei muitas voltas ai neh… mais vale a leitura…

flw t+ abs

S

Eai, blz pessoal!!

Bom, vou falar como eu faço.

Em um projeto de 3 camadas, no pacote de Entidades, que geralmente nomeio de “Entities”, ficam os atributos do meu objeto, e seus respectivos getters e setters, e nestes, faço verificações de inserção de valores inválidos, como por exemplo em um atributo “diaMes”, não poderia entrar um valor 45 então faço esta validação já em seu set.

Já no pacote de Regras de negocio, que geralmente chamo de “BLL” valido coisas referentes a regras do empresa, por exemplo, se o valor do atributo diaMes for “10”, o atributo “optFaturamento” tem que ser “A”, verifico se campos obrigatórios estão preenchidos e etc…

Na interface de usuário não valido nada, somente me resguardo quanto as exceções que podem ser geradas, através do try/catch, e movo o foco para o campo com erro.

Bom isso é o que eu faço, e se estiver errado, agradeço quem me corrigir. :wink:

R

Vlw galera, deu pra ter uma ideia de como isso eh feito.

Obrigado.

Criado 15 de agosto de 2011
Ultima resposta 16 de ago. de 2011
Respostas 4
Participantes 4