是否有客观的论据支持或反对使用对象vs唯一ID作为方法/函数参数?(以及其他对象的成员?)。特别是在静态类型语言(C#/ Java / Scala)的上下文中
对象本身的优点:
- 更多类型安全的调用。使用ID时,存在参数错误排序的风险。尽管可以通过为每个仅保留该类ID的类保留一个“ mini”类来缓解这种情况。
- 从持久中获得一次,无需再次获得
- 使用ID时,如果id类型发生更改,例如int-> long,则将要求全面更改,并且可能会出错。.(courtsey:https ://softwareengineering.stackexchange.com/a/284734/145808 )
使用ID的优点:
- 在大多数情况下,不需要唯一的对象,只需要uniqueid即可,因此拥有ID可以节省从持久性获取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和orrowedBy字段是过大的。
当然,这些只是我的观点。我确定我想念东西,所以想知道赞成/反对的要点是什么。