cv:
Cospe na cara do Demeter, mesmo. :(
http://www.pragprog.com/articles/tell-dont-ask
Interessante. É que no meu caso tudo que eu quero é, via reflection, imprimir todas as propriedades públicas de um objeto. Nada de muito complexo ou pecaminoso.
Mas, ja que eu sei que vc eh cabeca dura e nao vai desistir, o melhor jeito eh criar algo do tipo:
class Foo
include Properties
property :bar
property :baz
end
f = Foo.new
f.bar = "hello"
f.baz = "world"
f.properties # == [:bar, :baz]
f.properties.include? :bar # == true
f.properties.include? :baz # == true
f.properties.include? :meh # == false
Bem legal essa sua idéia, mas eu ou vc ou qualquer um pode criar seu próprio esquema de propriedades para objetos Ruby. Cheguei até a pensar que esse Properties que você incluiu era do próprio Ruby, mas procurando no RDocs não encontrei nada parecido. Me parece natural termos uma convenção onde todos usariam o mesmo esquema para indicar uma propriedade pública, assim como em Java usamos métodos getters (getXXXX) sem argumentos.
Se hoje vc me passa um objeto Cidade e eu quero imprimir e/ou ter acesso a todas suas propriedades como CEP => '22222-123', Name => 'Rio de Janeiro', Estado = 'RJ', etc. Como eu faço? Bisbilhotar variáveis de instancia que por definição são privadas não me parece sadio. Chamar todos os métodos sem parametros seria insano.
Só queria realmente saber se há alguma convenção para isso da própria linguagem ou não.
louds:
Se teu código precisa de muitos accessors ele tem um sério problema de design.
Sim, assim como se vc come muitas batatas-fritas terá sérios problemas gastro-intestinais (vide o filme Super Size Me). Propriedades me parece algo tão trivial quanto batatas-fritas, já se você vai utilizar esse recurso em demazia é outra história. The ass has nothing to do with the paints, right?. ;-)