[quote=mzugaib]Pessoal quando eu devo usar id e quando eu devo usar objeto?
Por exemplo:
Collection getEmails(Long idUsuario) ou Collection getemails(Usuario usuario)?
Collection enviarMensagem(Lond idDestinatario, Mensagem mensagem) ou (Usuario destinatario, Mensagem mensagem)? Este último eu ainda poderia fazer diferente como enviarMensagem(Lond idDestinatario, Long idRemetente, String corpo, String assunto) ou ainda enviarMensagem(Mensagem mensagem) onde mensagem já teria tudo? enfim? São várias as formas.
Eu fico me perguntando: se temos o OOP, eu acho muito feio métodos como pesquisar(Long idTipoUsuario, Long idCidade, Char sexo, Integer idStatus) e tal.[/quote]
Bom, a meu ver, no seu caso, o getEmails por exemplo, seria melhor passando usuario, assim como o enviarMensagem, tendo o objeto de mensagem ja com o usuario definido, isso por 2 motivos:
- Nao expor os atributos do seu objeto e o que o torna unico (no caso o id do usuario).
- Nao expor os atributos necessarios para executar uma operacao, quando esses atributos pertencem a uma classe.
Isso para nao criar acoplamento por parametro, ja que, imagine que vc venha a implementar alguma estratégia multi-empresa na sua aplicação, e agora, falando em mundo relacional e banco de dados, o que identifica o seu Usuario nao é apenas o Id, mas sim uma composição de id e idEmpresa. vc vai ter q sair mudando tudo na sua aplicação???
Foi so para sitar um exemplo, ja que, nesse caso, vc nao estaria complicando o modelo por estar, ao inves de esperar o id do usuario, esperar um objeto de usuario, mas sim, tornando-o mais simples.
Lembre-se, KISS sempre (Keep it simple, stupid)
VLW