Esistono argomenti oggettivi a favore o contro l'uso di oggetti rispetto all'ID univoco come parametri metodo / funzione? (e membri di altri oggetti?). Specialmente nel contesto delle lingue tipizzate staticamente (C # / Java / Scala)
Pro dell'oggetto stesso:
- Altre chiamate typesafe. Con gli ID c'è il rischio di un errato ordinamento degli argomenti. Questo può essere mitigato mantenendo una classe "mini" per ogni classe che memorizza solo l'ID di quella classe.
- Ottieni una volta dalla persistenza, non è necessario riprovare
- Con ID, se il tipo di ID cambia, dì int - > a lungo, quindi richiederebbe modifiche su tutta la linea con possibilità di errori .. (courtey: link )
I vantaggi dell'utilizzo dell'ID:
- Il più delle volte non c'è bisogno di un oggetto reale, solo uniqueid lo farebbe, quindi avere l'ID risparmia tempo per ottenerlo dalla persistenza.
Una miscela di queste tecniche, per quanto posso vedere, avrebbe solo contro entrambi e nessuno dei due.
Dato che questo è un problema concretamente definito, spero che ci siano risposte obiettive e non- "Penso" o "Mi piace" tipi ...: -).
EDIT: contesto sul suggerimento di un commentatore- L'unica restrizione è una lingua tipizzata in modo statico. L'applicazione è un'applicazione generica, sebbene sia felice di ottenere risposte basate su scenari di utilizzo specifici.
EDIT: un altro contesto. Dì che ho un sistema di gestione dei libri. Il mio modello è:
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.
}
Perché dovrei mantenere solo id e non il membro completo? Dì quando ricevo informazioni sul libro, raramente ho bisogno di sapere chi ha donato o preso in prestito. Ottenere le informazioni complete per popolare i campi donati e presi in prestito dai campi è eccessivo.
Ovviamente, questi sono solo i miei punti. Sono sicuro che mi mancano le cose, quindi volevo sapere quali sono i punti a favore / contro.