Excessões na BO

9 respostas
cleriston

Tenho uma classe de regra de negocios (Business Object) em que faz validação de 6 campos.

O que é mais correto :
-lançar 6 excessões e passá-las pelo Facade e mostrá-las na classe GUI
-Ou mostrar as 6 excessões dentro da classe de regra de negócios

??

Desde já fico grato

9 Respostas

danieldestro

Um BO não deveria validar CAMPOS da tela.
Mas você pode ter uma classe de validação que retorna um objeto com mensagens de erro encontrados, por exemplo.

cleriston

Na BO deveria validar o q então ?

Pois achei q na BO eu deveria forçar o usuario a nao cadastrar coisas erradas.

P

IMO, um BO deve lançar exce[color=red]ções[/color], e não exce[color=red]ssões[/color]. (desculpe, não resisti ;^))

Voltando. Acho razoável o BO parar na primeira inconsistência que encontrar e lançar uma IllegalArgumentException (ou classe derivada desta) contendo um CÓDIGO de erro. O código não precisa ser numérico, é claro. Aqui procuro usar algo que siga uma convenção do tipo “modulo.funcao.nn”, onde nn é um número seqüencial.

A camada de apresentação em princípio deveria saber quais os pré-reqs da chamada e, portanto, já é seu papel bloquear na medida do possível dados inconsistentes, e, aí sim, juntar todas as inconsistências em uma única mensagem. Não há nada mais tosco que um formulário de 10 campos em que, apesar de haver 3 inconsistências, a lógica mostra apenas a primeira, obrigando o usuário a fazer múltiplas correções…

pcalcado

Pera, mas o que raios é um BO antes de mais nada?

danieldestro

Leia a primeira linha desta thread.

pcalcado

Eu já li, mas se você prefere: O que raios é um ‘Business Object’?

cleriston

psevestre fico grato pela sua observação em relação a gramática…

Eu me referi a Business Object a uma classe de regra onde fica concentrada as regras de negócios

pcalcado

Bom, se acompanhando com estas ‘classes de regras de negócio’ existirem ‘classes de dados’ recomendo a leitura urgente disso:

http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs

cleriston

Li seu artigo, e parabenizo pelo mesmo.

Mas gostaria de discutir algumas coisas, mas se já tiver algum tópico relacionado a tal artigo, me indique q eu migro

[list]No mundo real, por exemplo, um carro não se “cria”. Não fica estranho as regras ficarem na VO?[/list]
[list]Em um esquema não anêmico, você faria os “set’s” e depois chamaria o metodo para validar. Neste mesmo método ele “se mandaria” para a DAO para gravar no banco?[/list]

Criado 1 de março de 2007
Ultima resposta 2 de mar. de 2007
Respostas 9
Participantes 4