| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 10:51:58
|
JotaJota
Java Ninja
![[Avatar]](/images/avatar/902447c6ce9d4f39e12a463b4d4ff759.jpg)
Membro desde: 11/05/2007 03:36:11
Mensagens: 256
Localização: Araraquara
Offline
|
Eu tenho uma classe que tem muitos atributos, nem todos eles como obrigatório.
Dependendo do que eu cadastrar, dos atributos que eu inserir dados, ele vai salvar com uma situação que é de preenchimento automatico
eu tenho 5 tipos de situações para este meu objeto
Minha regra de negocio fala que por exemplo:
se campos A,B,C,D estiverem preenchidos &&
se campo C < 100 &&
campo D não estiverem preenchidos
Então situação = situação 1
se campo A,B,C estiverem preenchidos &&
se campo C < 100 &&
campo C,D não estiverem preenchidos
Então situação = situação 2
E assim por diante...
Eu tenho essa regra que verifica os campos preenchido e se atender algumas validações ele seta uma situação(status) apropriada.
Em uma classe especifica para Negocio do caso de uso eu poderia simplemente criar um monte de IFs para resolver este problema.
Eu gostaria de diminuir esse monte de IF, porque if com OO fica feio.
Eu queria aplicar mais o OO
PS: Tentei aplicar o Padrão de Projeto state, porem ele foi descardado pelo fato de, que este padrão parte do pressuposto de que quando alterado uma situação, ele executa um comando especifico para aquela situação
no meu caso eu tenho que apenas validar meus campos se estão preenchidos ou não e setar essa situação automaticamente.
Alguem tem alguma ideia de como resolver este problema, este excesso de if?
alguem tem algum padrão que auxilia nessa regra?
Atenciosamente
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 11:06:17
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Coloque cada um desses blocos no seu próprio método com nome bem explicado.
Strategy é outro padrão que você pode ver.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 11:11:58
|
JotaJota
Java Ninja
![[Avatar]](/images/avatar/902447c6ce9d4f39e12a463b4d4ff759.jpg)
Membro desde: 11/05/2007 03:36:11
Mensagens: 256
Localização: Araraquara
Offline
|
Coloque cada um desses blocos no seu próprio método com nome bem explicado.
Strategy é outro padrão que você pode ver
por exemplo:
verificaSituacao1(){
//verifica campos....
}
assim?
Ps: vou ver strategy. Obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 13:15:47
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Verificar é um verbo muito ruim, faça um pergunta cuja resposta é Sim ou Não e coloque esta pergunta inteira como o nome do método.
O objetivo é deixar a leitura do código o mais fluente possível.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 13:21:22
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
vc pode usar Enums.... com os tests... eu acho uma solução bem legal ^^
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 13:23:28
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Lavieri wrote:vc pode usar Enums.... com os tests... eu acho uma solução bem legal ^^
Testes tudo bem, mas não entendi os enums
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 13:24:43
|
JotaJota
Java Ninja
![[Avatar]](/images/avatar/902447c6ce9d4f39e12a463b4d4ff759.jpg)
Membro desde: 11/05/2007 03:36:11
Mensagens: 256
Localização: Araraquara
Offline
|
Nunca usei enuns...
tem link?
//metodo que responde se um campo foi preenchido ou não
iscampoAPreenchido();
isCampoBPreenchido();
entendi...
poderei reutilizar o metodo varias vezes XD
vlwwww!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2009 15:55:59
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
assim por exemplo...
ai um exemplo de uso do teste
assim eu guardo os teste em um Enum, e posso sair testando todos, podia ali ao constatar que stillValid = false, lançar um Throws com o ValidadeCnpj.CONSTATE adequado...
acho uma forma facil de testar
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2009 07:43:14
|
JotaJota
Java Ninja
![[Avatar]](/images/avatar/902447c6ce9d4f39e12a463b4d4ff759.jpg)
Membro desde: 11/05/2007 03:36:11
Mensagens: 256
Localização: Araraquara
Offline
|
vlwwwwww
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2009 09:25:12
|
ambuzr
JavaChild
![[Avatar]](/images/avatar/b904ef416b3a224449335e0c4e8f60cc.jpg)
Membro desde: 03/06/2008 16:53:41
Mensagens: 106
Offline
|
massa oh sabia nao vlw tb
|
java & linux, apanhando mais aprendendo
---------------------------------------------------
Quando rebaixas alguem, automaticamente voce se curva para rebaixar portanto voce tambem es rebaixado, porem quando levantas alguem automaticamente voce tambem es levantado |
|
|
 |
|
|