Czy istnieją obiektywne argumenty przemawiające za lub przeciw używaniu obiektów vs unikalny identyfikator jako parametry metody / funkcji? (i członkowie innych przedmiotów?). Specjalnie w kontekście języków o typie statycznym (C # / Java / Scala)
Plusy samego obiektu:
- Więcej bezpiecznych połączeń. W przypadku identyfikatorów istnieje ryzyko niewłaściwego uporządkowania argumentów. Można to jednak złagodzić, utrzymując klasę „mini” dla każdej klasy, która przechowuje tylko identyfikator tej klasy.
- Zdobądź raz z wytrwałości, nie musisz więcej
- Z identyfikatorem, jeśli typ identyfikatora zmienia się, powiedzmy int -> long, wówczas wymagałoby to zmiany z możliwością wystąpienia błędów .. (courtsey: https://softwareengineering.stackexchange.com/a/284734/145808 )
Plusy używania identyfikatora:
- Przez większość czasu nie potrzeba rzeczywistego obiektu, wystarczyłoby tylko uniqueid, więc posiadanie identyfikatora oszczędza czas od uzyskania go z trwałości.
Mieszanka tych technik, o ile widzę, miałaby tylko wady obu i zalety obu.
Biorąc pod uwagę, że jest to konkretnie określony problem, mam nadzieję, że istnieją obiektywne odpowiedzi, a nie typy „myślę” lub „lubię”… :-).
EDYCJA: Kontekst sugestii komentatora - Jedynym ograniczeniem są języki o typie statycznym. Ta aplikacja jest aplikacją ogólnego przeznaczenia, chociaż chętnie otrzymuje odpowiedzi na podstawie konkretnych scenariuszy użytkowania.
EDYCJA: Więcej kontekstu. Powiedz, że mam system zarządzania książkami. Mój model to:
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.
}
Dlaczego miałbym chcieć zachować tylko identyfikator, a nie pełnego członka? Powiedz, kiedy otrzymuję informacje o książce, rzadko muszę wiedzieć, kto ją podarował lub pożyczył. Uzyskanie pełnych informacji w celu wypełnienia pól darowanych i pożyczonych to przesada.
Oczywiście, to tylko moje punkty. Jestem pewien, że brakuje mi rzeczy, więc chciałem wiedzieć, jakie są punkty za / przeciw.