Existem argumentos objetivos a favor ou contra o uso de objetos versus ID exclusivo como parâmetros de método / função? (e membros de outros objetos?). Especialmente no contexto de linguagens de tipo estaticamente (C # / Java / Scala)
Prós do próprio objeto:
- Mais chamadas seguras. Com os IDs, existe o risco de ordem incorreta dos argumentos. Isso pode ser atenuado, mantendo uma classe 'mini' para cada classe que armazena apenas o ID dessa classe.
- Obtenha uma vez de persistência, não há necessidade de obter novamente
- Com o ID, se o tipo de ID mudar, digamos int -> long, isso exigiria alterações gerais, com possibilidade de erros. (Cortes: https://softwareengineering.stackexchange.com/a/284734/145808 )
Profissionais do uso do ID:
- Na maioria das vezes, não é necessário o objeto real, apenas o uniqueid faria, portanto, ter o ID economiza tempo para obtê-lo da persistência.
Uma mistura dessas técnicas, até onde posso ver, teria apenas contras de ambos e profissionais de nenhuma das duas.
Dado que este é um problema definido concretamente, espero que haja respostas objetivas e não os tipos "eu acho" ou "eu gosto" ... :-).
EDIT: Contexto sobre a sugestão de um comentarista. A única restrição é uma linguagem de tipo estaticamente. O aplicativo é um aplicativo de uso geral, embora tenha prazer em obter respostas com base em cenários de uso específicos.
EDIT: Um pouco mais de contexto. Digamos que eu tenha um sistema de gerenciamento de livros. Meu modelo é:
Book: { id: Int, isbn: String, donatedBy: Member, borrowedBy: Member }
Member: {id: Int, name: String}
Table- wishlist: { isbn: String, memberId: Int}
Table- borrows: { id: Int, memberId: Int}
Method:
isInWishList( book: Book, member: Member ) vs isInWishList( bookId: Int, memberId: Int)
handleBorrowRequest( memberId: Int, book: Book ){
//the login system doesn't actually get the entire member structure, only the member id. I don't need the full member yet. can run a query to verify that the memberId has less than max allowed books for borrowing.
}
Por que eu gostaria de manter apenas o id e não o membro completo? Digamos que quando recebo informações sobre o livro, raramente preciso saber quem o doou ou pediu emprestado. Obter as informações completas para preencher os campos doados e emprestados é um exagero.
Claro, esses são apenas meus pontos. Tenho certeza de que estou perdendo as coisas, então queria saber quais são os pontos a favor / contra.