객체 / 고유 ID를 메소드 / 함수 매개 변수로 사용하는 것에 대한 객관적인 주장이 있습니까? (및 다른 개체의 구성원?). 특히 정적으로 유형이 지정된 언어 (C # / Java / Scala)와 관련하여
객체 자체의 장점 :
- 더 안전한 유형의 통화. ID를 사용하면 인수 순서가 잘못 될 위험이 있습니다. 그래도 해당 클래스의 ID 만 저장하는 각 클래스에 대해 '미니'클래스를 유지하면이를 완화 할 수 있습니다.
- 끈기에서 한 번, 다시 가져올 필요가 없습니다.
- ID를 사용하여 ID 유형이 변경되면 int-> long과 같이 실수로 보드 전체에서 변경해야합니다. (courtsey : https://softwareengineering.stackexchange.com/a/284734/145808 )
ID 사용의 장점 :
- 대부분의 경우 실제 객체가 필요하지 않고 uniqueid 만 수행하므로 ID를 유지하면 지속성에서 가져 오는 시간을 절약 할 수 있습니다.
내가 볼 수있는 한,이 기술들의 혼합은 둘 다의 장점과 단점이있을 뿐이다.
이것이 구체적으로 정의 된 문제라는 점을 감안할 때 객관적인 답변이 있기를 바랍니다.
편집 : 의견 제안자에 대한 맥락-유일한 제한은 정적으로 유형이 지정된 언어입니다. 이 응용 프로그램은 범용 응용 프로그램이지만 특정 사용 시나리오를 기반으로 답변을 얻을 수도 있습니다.
편집 : 좀 더 컨텍스트. 책 관리 시스템이 있다고 가정 해 봅시다. 내 모델은 :
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.
}
정식 회원이 아닌 ID 만 유지하고 싶은 이유는 무엇입니까? 책에 대한 정보를 얻을 때 누가 기부하거나 빌린 사람에 대해 거의 알 필요가 없습니다. donatedBy 및 차용 한 필드를 채우기 위해 전체 정보를 얻는 것은 과도합니다.
물론, 이것들은 나의 요점 일뿐입니다. 나는 물건을 놓치고 있다고 확신하므로 선호하는 점이 무엇인지 알고 싶었습니다.