Killing the getter´s and setter´s  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
luiz_ross
GUJ Master
[Avatar]

Membro desde: 25/09/2002 16:38:34
Mensagens: 1110
Localização: Salto, SP
Offline

Vagando pela net, achei um artigo bem interessante de um tal de Allen Holub AQUI,
onde o autor mostra uma alternativa aos famigerados getter´s e setter´s que tanta gente detesta.
Apesar de eu ter achado uma boa solução pra matá-los , tambem achei um pouco complexa. Gostaria de ter a opinião da galera sobre a alternativa usada pelo autor, e também, como é que vc´s tem feito para evitar o uso dos getter´s e setter´s.

This message was edited 1 time. Last update was at 26/04/2005 11:36:09


"Quanto mais inteligente é um homem, mais originalidade ele descobre nos homens. Pessoas ordinárias não enxergam nenhuma diferença entre eles"
[MSN]
maxguzenski
Virtual Machine Man
[Avatar]

Membro desde: 07/03/2003 11:47:42
Mensagens: 549
Localização: Porto Alegre
Offline

cara, eu nao tenho absolutamente nada contra os getters e setters
Mas mesmo q eu tivesse, essa ideia de usar um monte de Interfaces e tal da muito trabalho...

Maximiliano Ferreira Guzenski
Sun Certified Java Programmer 1.4
Sun Certified Web Component Developer 1.4
http://www.guzenski.com.br
[Email] [WWW] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Fora a parte do HTML, achei bonito. Mas realmente trabalhoso. Preferi o meu jeito fazendo uma gambiarrinha com reflection hehe

E maxguzenski, quando estiver envolvido num projeto médio/grande, vai ver que dói bastante colocar tudo nas actions, como o autor demonstra aqui:

Former LIPE.
[ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

[ainda não li o artigo, o site aparece lento demais aqui ]

O problema não é get/set, o problema é expôr desnecessariamente um atributo

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

Eu gostei da idéia de deixar seus atributos e getters/setters como privado, e só expor a interface dométodo responsável por alguma ação.

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
maxguzenski
Virtual Machine Man
[Avatar]

Membro desde: 07/03/2003 11:47:42
Mensagens: 549
Localização: Porto Alegre
Offline

hm, sera q o projeto q estou trabalhando a 2 anos pra uma multinacional , com uma equipe de 10 pessoas , utilizando Spring/Hibernate e Jboss é um projeto de medio/grande porte ?

E exatamente por isso, o projeto tem cerca de 50 tabelas, mais de 50 classes de hibernate... sem contar classes de view, controller , toneladas de DAO

me parece q essa ideia das Interfaces iria aumentar de forma desnecessária o trabalho para projetos grandes, pois nao iria diminuir a possibilidades de erro... no maximo ia ficar mais elefante (e atrazado).

Maximiliano Ferreira Guzenski
Sun Certified Java Programmer 1.4
Sun Certified Web Component Developer 1.4
http://www.guzenski.com.br
[Email] [WWW] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

max, isso é pequeno, na verdade pequeníssimo hehe temos dois projetos desse tamanho aqui. Se o cv aparecer, quem sabe ele fale do projeto com 20mbs de .java em que está trabalhando.

Concordo que o que o autor sugere é um pouco exagerado. Mas aprendi que colocar lógica de negócio fora dos objetos é uma grande cagada, obviamente, tudo tem exceções. No princípio não parece, mas depois vai doer, acredite

Former LIPE.
[ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Aidna não li tud, mas já vou pitacar:

Como java não tem selective export (falei sobre isso aqui outro dia), você pdoe sim utilizar interfaces para demarcar o que um cliente pdoe ver de uma classe, entretanto a abordagem dele acaba criando tantas interfaces distintas e em lugares tão exóticos que parece complicar as coisas muito mais.

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

LIPE wrote:max, isso é pequeno, na verdade pequeníssimo hehe temos dois projetos desse tamanho aqui. Se o cv aparecer, quem sabe ele fale do projeto com 20mbs de .java em que está trabalhando.


20mb? Sao 150
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Gostei dessa ideia mas pela integração da UI do que pela eliminação das getters e setters.
Dá para fazer binding de uma maneira bem interessante.

Agora o que eu não gosto dos getters e setters é somente a nomeclatura.
Em outras linguagens como PHP eu usava
definirXXX e obterXXX.
Podem achar que é uma frescura, mas se a classe está toda em portugues fica muito esquisito colocar coisas em ingles.
Esse negócio de get e set eu uso só por inércia como muita coisa do java.
como retornar collection generica.
eu acho melhor não expor a collection mas sim criar métodos de manipulação.
ex:

O bom menino !!!
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Quando expondo um atributo, eu preferiria



Na verdade, o setter tanto faz (ccom código em inglês eu usaria get), mas a query sendo apenas o nome do que se quer obter (não necessariamente o nome do atributo, você pdoe, por exemplo, calcular idade em runtime baseado na data de nascimento) é mais natural.

O que é melhor:


ou



? (nota: esqueça padronização aqui)

This message was edited 1 time. Last update was at 27/04/2005 09:43:38


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Ficou melhor ainda sem o obterXXX.
É verdade, fica mais intuitivo você ter funcionario.idade().

Eu acho que o pessoal do GUJ deveria fazer uma campanha.
"Vamos adotar padrões decentes !!!".

O que complica é que em frameworks como hibernate, struts a gente fica dependente dos getters e setters.
Ou Nao ?

O bom menino !!!
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

maxguzenski wrote:hm, sera q o projeto q estou trabalhando a 2 anos pra uma multinacional , com uma equipe de 10 pessoas , utilizando Spring/Hibernate e Jboss é um projeto de medio/grande porte ?

E exatamente por isso, o projeto tem cerca de 50 tabelas, mais de 50 classes de hibernate... sem contar classes de view, controller , toneladas de DAO

me parece q essa ideia das Interfaces iria aumentar de forma desnecessária o trabalho para projetos grandes, pois nao iria diminuir a possibilidades de erro... no maximo ia ficar mais elefante (e atrazado).


Garanto que muitas dessas classes poderiam ser jogadas fora. Quantas so de VO/DTO que nao fazem nada a nao ser um monte de get/set tem por ai?

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

pcalcado wrote:


ou



? (nota: esqueça padronização aqui)


Eu prefiro a segunda, mas uso a primeira pela padronizacao.

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

fabgp2001 wrote:
Eu prefiro a segunda, mas uso a primeira pela padronizacao.



Pois é, apesard e mais natural, na verdade quando você trabalha com algo que outras pessoas precisam ler é melhor seguir padrões.

BTW: http://www.guj.com.br/posts/list/23490.java

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team