Чи існують об'єктивні аргументи за або проти використання об'єктів проти унікального ідентифікатора як параметрів методу / функції? (а члени інших об’єктів?). Спеціально в контексті мов, що мають статичний тип (C # / Java / Scala)
Плюси самого об’єкта:
- Більше типів безпечних дзвінків. Ідентифікатори мають ризик неправильного впорядкування аргументів. Це можна зменшити, зберігаючи міні-клас для кожного класу, який зберігає лише ідентифікатор цього класу.
- Отримайте один раз від наполегливості, не потрібно отримувати знову
- Ідентифікатор, якщо тип id зміниться, скажімо, int -> long, то вимагатиме змін у всій смузі з можливістю помилок .. (Courtsey: https://softwareengineering.stackexchange.com/a/284734/145808 )
Плюси використання ID:
- Більшість часу не потребує фактичного об’єкту, а просто унікальний, тому наявність ID дозволяє економити час від отримання його від постійності.
Наскільки я бачу, суміш цих прийомів мала б лише мінуси і того, і іншого.
Враховуючи, що це конкретно визначена проблема, я сподіваюся, що є об’єктивні відповіді, а не типи "я думаю" чи "мені подобається" ... :-).
EDIT: Контекст щодо пропозиції коментатора. Єдине обмеження - це статично набрані мови. Додаток - це програма загального призначення, хоча рада отримати відповіді і на конкретних сценаріях використання.
EDIT: Ще трохи контексту. Скажіть, у мене є система управління книгами. Моя модель:
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.
}
Чому я хотів би зберегти тільки ідентифікатор, а не повний член? Скажіть, коли я отримую інформацію про книгу, мені рідко потрібно знати про те, хто її пожертвував чи позичив. Отримати їх повну інформацію для заповнення подарованихBy та позиченихBy полів - це надлишок.
Звичайно, це лише мої моменти. Я впевнений, що мені не вистачає речей, тому хотілося знати, які є бали на користь / проти.