Validações

9 respostas
D

Olá turma, quero a opinião de vocês: validações (datas informadas, número de identificação do animal doméstico, quantidade de ração não disponível) devem ocorrer no cliente ou no negócio?

Achei muito estranho, por exemplo, a pessoa que usa o sistema poder informar uma data errada tipo 31/02/2011 (não existe) e só ficar sabendo depois que clicar no botão confirmar, visto que a validação está na camada de negócio.

O sistema é Java Swing.

Obrigada! :smiley:

9 Respostas

A

se sua validação envolve alguma regra, vc deve ir a camada de negocio, por exemplo fazer alguma consulta no banco de dados, mas caso nao seja necessario, vc pode fazer essa validação na camada de visão.

t+

nel

daniellybifaratte:
Olá turma, quero a opinião de vocês: validações (datas informadas, número de identificação do animal doméstico, quantidade de ração não disponível) devem ocorrer no cliente ou no negócio?

Achei muito estranho, por exemplo, a pessoa que usa o sistema poder informar uma data errada tipo 31/02/2011 (não existe) e só ficar sabendo depois que clicar no botão confirmar, visto que a validação está na camada de negócio.

O sistema é Java Swing.

Obrigada! :D

Se estamos falando em Java Swing, não vejo uma camada chamada “cliente”. Isso eu enxergo em sistemas WEB, onde podemos efetuar validações no próprio cliente ou no servidor. É claro que podemos falar em comunicação via Sockets e etc, todavia, acredito que estamos falando na camada view. Entendo pouco de Swing, mas acredito que para esse caso você teria de validar usando listener/eventos.

Algo como quando o usuário perder o foco de onde está digitando a data e etc. De qualquer forma , vejo que a camada de negócio deve ter sua participação nesse caso.
Isso garante que nenhum dado incorreto chegará ao seu DAO :slight_smile:

D

Entendi meninos, Obrigada. :smiley:

Nel, como seria uma validação usando listener/eventos? Isso você fala no exemplo de “número de identificação do animal doméstico” ou " quantidade de ração não disponível"?

E no caso de ser só uma simples validação de data informada? Faria a validação na visão e posteriormente no negócio novamente? Duas vezes?

Obrigada…

Luciano_Lopes

Você deve fazer as validações na view, como o colega a cima falou.

Luciano_Lopes

daniellybifaratte:
Entendi meninos, Obrigada. :smiley:

Nel, como seria uma validação usando listener/eventos? Isso você fala no exemplo de “número de identificação do animal doméstico” ou " quantidade de ração não disponível"?

E no caso de ser só uma simples validação de data informada? Faria a validação na visão e posteriormente no negócio novamente? Duas vezes?

Obrigada…


Apenas na visão, depois que a validação “passar” a regra de negocio executa novamente.

renamed

Oi

Uma boa prática é fazer as validações em todas as camadas do sistema (repare que não disse programa, eu disse sistema).
Desde sua tela, até o procedimento no banco.

Alguns sistemas obtém dados de outras fontem além do input do usuário (arquivos XML, por exemplo). Por isso, é um boa validar os dados em cada camada.

nel

renamed:
Oi

Uma boa prática é fazer as validações em todas as camadas do sistema (repare que não disse programa, eu disse sistema).
Desde sua tela, até o procedimento no banco.

Alguns sistemas obtém dados de outras fontem além do input do usuário (arquivos XML, por exemplo). Por isso, é um boa validar os dados em cada camada.

Concordo com o colega e acrescento. Você não pode pensar que a única entrada de dados será através da tela X.
Você pode ter uma outra necessidade e enviar dados incorretos ao DAO. A parte interessante de validar em todas as camadas (com exceção do DAO) é que você “limita” as chamadas. Não precisa passar por várias camadas até verificar que aquele dado trafegado é inválido.

O que sou absolutamente contra, é efetuar validações ou aplicar regras de negócios no DAO. No meu ponto de vista, as chamadas DAO devem ser concentradas em serviços e esses serviços efetuarem “a última validação” ou “aplicação de regras”. Pois a função do DAO, é simplesmente manipular os dados que serão persistidos, consultados, removidos e etc em relação a sua base de dados.

daniellybifaratte:
Nel, como seria uma validação usando listener/eventos? Isso você fala no exemplo de “número de identificação do animal doméstico” ou " quantidade de ração não disponível"?

E no caso de ser só uma simples validação de data informada? Faria a validação na visão e posteriormente no negócio novamente? Duas vezes?

Obrigada…

Assim, em WEB você pode adicionar um evento chamado onchange a um combobox. O que ele faz? A cada mudança na seleção do item do combo ele executa a chamada ao metodo associado ao evento. Nesse caso, ele não precisa clicar em um botão por exemplo para validar se o item do combo está correto (esse evento normalmente é usado para outras coisas pois se tem em mente que o valor no combobox esteja correto…).

Isso pode ser feito em um campo de entrada, quando o usuário está digitando, quase igual um autocomplete, digamos que quando o usuário digitar no campo mês 13, essa validação já é realizada devido a um evento lançado por um listener. De qualquer forma, eu acredito que você deva deixar em aberto e o usuário digitar o que bem entender e o teu sistema posteriormente validar isso. Para datas, podes criar três campos (dias, mês e ano), usar um combo para os dias, outro para o mês e outro para o ano, podes usar uma máscara, enfim, vai da sua imaginação :slight_smile:

D

Meninos, agradeço toda a ajuda! :smiley:
Obrigada. Até +…

L

Concordo com os comentários dos colegas e vou acrescentar…

Para datas eu aconselho usar um datapicker!

É aquele calendário que abre quando vc clica no textbox ou em uma imagem!.
Assim a data sempre será válida!

Dá uma olhada nesse site:

http://www.jdatepicker.com/

Criado 13 de novembro de 2011
Ultima resposta 13 de nov. de 2011
Respostas 9
Participantes 6