Apakah ada argumen objektif untuk atau menentang penggunaan objek vs ID unik sebagai parameter metode / fungsi? (dan anggota benda lainnya?). Khususnya dalam konteks bahasa yang diketik secara statis (C # / Java / Scala)
Kelebihan objek itu sendiri:
- Lebih banyak panggilan aman. Dengan ID ada risiko pemesanan argumen yang salah. Ini dapat dikurangi meskipun dengan menjaga kelas 'mini' untuk setiap kelas yang hanya menyimpan ID dari kelas itu.
- Dapatkan sekali dari ketekunan, tidak perlu mendapatkan lagi
- Dengan ID, jika tipe id berubah, katakan int -> long, maka akan membutuhkan perubahan di papan dengan kemungkinan kesalahan .. (courtsey: https://softwareengineering.stackexchange.com/a/284734/145808 )
Kelebihan menggunakan ID:
- Sebagian besar waktu tidak perlu untuk objek yang sebenarnya, hanya uniqueid akan lakukan, jadi memiliki ID menghemat waktu dari mendapatkannya dari kegigihan.
Campuran teknik-teknik ini, sejauh yang saya bisa lihat, hanya akan memiliki kekurangan dan kelebihan dari keduanya.
Mengingat bahwa ini adalah masalah yang didefinisikan secara konkret, saya harap ada jawaban yang objektif dan bukan- "Saya pikir" atau "Saya suka" jenis ... :-).
EDIT: Konteks pada saran dari komentator- Satu-satunya batasan adalah bahasa yang diketik secara statis. Aplikasi ini adalah aplikasi tujuan umum, meskipun senang mendapatkan jawaban berdasarkan skenario penggunaan khusus juga.
EDIT: Beberapa konteks lagi. Katakanlah saya memiliki sistem manajemen buku. Model saya adalah:
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.
}
Mengapa saya ingin hanya menyimpan id dan bukan anggota penuh? Katakanlah ketika saya mendapat info tentang buku, saya jarang perlu tahu tentang siapa yang menyumbangkan atau meminjamnya. Mendapatkan informasi lengkap mereka untuk mengisi bidang yang disumbangkan oleh dan dipinjam oleh saya adalah suatu keharusan.
Tentu, ini hanya poin saya. Saya yakin saya kehilangan hal-hal sehingga ingin tahu apa poin yang mendukung / menentang.