quarta-feira, 3 de agosto de 2011

[PIADA] Os tipos de problemas (em forma ascendente)

[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

[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