[quote=viniciusv][quote=luistiagos][quote=viniciusv][quote=luistiagos][quote=viniciusv]Só uma sugestão: que tal trocar TodosQuartos.getDisponiveis(periodo) por TodosQuartos.disponiveisEm(periodo) ?
Nomes são importantes. E se a língua escolhida para nomear as coisas for o português, provavelmete não existirá esse ‘get’ na linguagem do domínio.[/quote]
Por padrão na nomeclatura da propria sun e aconselhavel usar getters e setters… talvez vc pense que isto e uma tremanda de uma bobagem… porem se for usar reflection para automatizar um pouco as coisas precisara de td em um padrão… dai sim vc vai ver a verdadeira utilidade de padrão para nomeclaturas…[/quote]
Padrões, reflection ou qualquer outro aspecto meramente computacional não pode ser razão pra nomear as coisas na camade de domínio. Tratam-se de complexidade acidental [1], não coisas que, de fato, fazem parte do domínio em questão. Pense no mesmo sistema mas implementado usando Python ou Ruby.
[1] http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959[/quote]
Talvez… mas ja parou pra pensar pq a propria sun resolveu criar um padrão? padrões é algo maravilhoso na hora de vc desenvolver algo… se algo e padronizado e tem digamos uma classe com um atributo custa… se vc usa padrões para os nomes em qualquer lugar vc deduzira que para retornar a custa chamara getCusta e não retornarCusta, exibirCusta, pegarCusta ou algo do genero… isto tornara implicito pois utiliza o padrão de nomeclatura… vc não precisa consultar a classe para saber como retornar determinado atributo…
isto se torna muito mais facil… mesmo que na outra maneira seja mais intuitivo… ou seja a padronização não serve so para o reflection saber oq ele esta fazendo e sim tbm para o programador saber o que ele esta fazendo sem precisar consultar o metodo para isto…[/quote]
Discordo. Getters/Setters são, na maioria das vezes, algo negativo. Objetos possuem estado e comportamento relacionados. É responsabilidade de um objeto receber mensagens e decidir por sí mesmo se muda de estado ou não. Getters/setters expõe a implementação do estado para fora da classe, fazendo com que este estado possa mudar imprevisivelmente e criando dependencias indesejáveis. Estado e lógica relacionados devem estar juntos [1]!
Além disso, getters/setters baseiam-se em implementação, não em intenção. Digamos que voce queira um método para justificar um parágrafo. Voce poderia fazer isso com um setter:
… que na verdade quer dizer “estou setando o valor CENTERED no attributo justification”. Não seria melhor…
… que diz exatamente o que voce quer, que é centralizar o parágrafo?
Recomendo a leitura desse post do Philip Calçado sobre esse assunto. Bem esclarecedor.
[1] http://www.amazon.com/Implementation-Patterns-Addison-Wesley-Signature-Kent/dp/0321413091[/quote]
A casos e casos… neste exemplo realmente não faz necessario o uso de um setter… pois o proprio objeto pode muder seu estado… porem qdo necessitamos de uma interação entre objetos, uma representação das entidades? como javabeans por exemplo… dai sim faz sentido…