[PIADA] Os tipos de problemas (em forma ascendente)
Isso é de uma piadinha que eu recebi:
Pepino = problema
Leão = um grande problema
Dragão = é um problema enorme
ALIEN = é um problema do outro mundo
PREDADOR = é um problema impossível de ser resolvido, exemplo, fazer um corpo com massa m viajar com velocidade acima da velocidade da luz
flw,
Rodison
Blog de Programação, TI, mobile, análise de sistemas
e desenvolvimento de software em geral.
quarta-feira, 3 de agosto de 2011
[java] Técnica "ReturnSet"
[java] Técnica "ReturnSet"
Oi pessoal,
Estou aqui para falar de uma prática que costumo adotar nos meus códigos java e flex chamado "ReturnSet".
É algo bem básico e simples que facilita a vida para quem precisa popular VOs que contenha muitos atributos.
Não chamo isso de padrão de projeto pois padrão de projeto é algo que foi muito estudado e - principalmente - comprovado na prática em várias situações e por várias pessoas em vários projetos.
Bem, vamos ao que interessa:
Digamos que você tem um VO com 10 atributos e precisa popular ele. O tradicional seria:
MeuVO meuVO = new MeuVO();
meuVO.setAtributo1("valor1");
meuVO.setAtributo2("valor2");
meuVO.setAtributo3("valor3");
...
meuVO.setAtributo10("valor10");
isso para cada um dos 10 atributos.
Ou então colocar tudo no construtor:
MeuVO = new MeuVO("valor1", "valor2", "valor3", ..., "valor10");
Essa segunda opção eu não gosto porque são tantos atributos - e não tem nada pra identificar eles - que eu pelo menos me perco sobre qual valor é de qual atributo.
Sem contar que se eu quisesse alterar só 3 atributos eu não conseguiria dessa segunda forma porque eu teria que passar todos os outros 7 atributos.
Uma solução simples para isso seria: além de ter um get e set tradicionais para cada atributo, poderíamos criar também um returnSet para cada atributo no VO.
Este "returnSet" seria como a seguir:
public MeuVO returnSetAtributo1(String atributo1) {
this.setAtributo1(atributo1);
return this;
}
Simples assim.
Dessa forma, para setar os atributos, só teríamos que fazer assim:
MeuVO meuVO = new MeuVO().returnSetAtributo1("valor1").returnSetAtributo2("valor2").returnSetAtributo3("valor3");
Pronto, só isso. Em uma única linha de maneira legível :)
Ah, mas dá mais trabalho ter que criar um returnSet para cada atributo!
Ah, mas eu já não gosto de gets e sets e tu vem me colocar mais um!
A minha resposta pra isso é: isso não é problema nenhum se você tem uma ferramenta que automatize seu código para você.
É muito fácil (muito mais fácil - e rápido - do que todo mundo imagina) fazer uma ferramenta automatizadora de código.
Vou mostrar isso em alguns posts pra frente.
É isso pessoal, flw.
Rodison
Oi pessoal,
Estou aqui para falar de uma prática que costumo adotar nos meus códigos java e flex chamado "ReturnSet".
É algo bem básico e simples que facilita a vida para quem precisa popular VOs que contenha muitos atributos.
Não chamo isso de padrão de projeto pois padrão de projeto é algo que foi muito estudado e - principalmente - comprovado na prática em várias situações e por várias pessoas em vários projetos.
Bem, vamos ao que interessa:
Digamos que você tem um VO com 10 atributos e precisa popular ele. O tradicional seria:
MeuVO meuVO = new MeuVO();
meuVO.setAtributo1("valor1");
meuVO.setAtributo2("valor2");
meuVO.setAtributo3("valor3");
...
meuVO.setAtributo10("valor10");
isso para cada um dos 10 atributos.
Ou então colocar tudo no construtor:
MeuVO = new MeuVO("valor1", "valor2", "valor3", ..., "valor10");
Essa segunda opção eu não gosto porque são tantos atributos - e não tem nada pra identificar eles - que eu pelo menos me perco sobre qual valor é de qual atributo.
Sem contar que se eu quisesse alterar só 3 atributos eu não conseguiria dessa segunda forma porque eu teria que passar todos os outros 7 atributos.
Uma solução simples para isso seria: além de ter um get e set tradicionais para cada atributo, poderíamos criar também um returnSet para cada atributo no VO.
Este "returnSet" seria como a seguir:
public MeuVO returnSetAtributo1(String atributo1) {
this.setAtributo1(atributo1);
return this;
}
Simples assim.
Dessa forma, para setar os atributos, só teríamos que fazer assim:
MeuVO meuVO = new MeuVO().returnSetAtributo1("valor1").returnSetAtributo2("valor2").returnSetAtributo3("valor3");
Pronto, só isso. Em uma única linha de maneira legível :)
Ah, mas dá mais trabalho ter que criar um returnSet para cada atributo!
Ah, mas eu já não gosto de gets e sets e tu vem me colocar mais um!
A minha resposta pra isso é: isso não é problema nenhum se você tem uma ferramenta que automatize seu código para você.
É muito fácil (muito mais fácil - e rápido - do que todo mundo imagina) fazer uma ferramenta automatizadora de código.
Vou mostrar isso em alguns posts pra frente.
É isso pessoal, flw.
Rodison
Assinar:
Postagens (Atom)