มีข้อโต้แย้งวัตถุประสงค์สำหรับหรือต่อต้านการใช้วัตถุกับ ID ที่ไม่ซ้ำกันเป็นพารามิเตอร์วิธีการ / ฟังก์ชั่น? (และสมาชิกของวัตถุอื่น ๆ ?) เป็นพิเศษในบริบทของภาษาที่พิมพ์แบบคงที่ (C # / Java / Scala)
ข้อดีของวัตถุเอง:
- โทร typesafe เพิ่มเติม ด้วย IDs มีความเสี่ยงในการเรียงลำดับอาร์กิวเมนต์อย่างไม่ถูกต้อง สิ่งนี้สามารถบรรเทาได้ด้วยการรักษาคลาส 'มินิ' สำหรับแต่ละคลาสที่เก็บ ID ของคลาสนั้นเท่านั้น
- รับเพียงครั้งเดียวจากการคงอยู่ไม่จำเป็นต้องกลับมาอีก
- ด้วย ID หากการเปลี่ยนแปลงประเภท id บอกว่า int -> long จะต้องมีการเปลี่ยนแปลงทั่วกระดานโดยอาจเกิดข้อผิดพลาด .. (courtey: https://softwareengineering.stackexchange.com/a/284734/145808 )
ข้อดีของการใช้ 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 เท่านั้นไม่ใช่สมาชิกเต็ม พูดเมื่อฉันได้รับข้อมูลเกี่ยวกับหนังสือฉันไม่ค่อยต้องการรู้ว่าใครบริจาคหรือยืมหนังสือ การรับข้อมูลเต็มของพวกเขาเพื่อเติมข้อมูลฟิลด์ donedBy และ borrowedBy เป็นสิ่งที่เกินความจำเป็น
แน่นอนเหล่านี้เป็นเพียงคะแนนของฉัน ฉันแน่ใจว่าฉันทำสิ่งที่ขาดหายไปดังนั้นอยากรู้ว่าอะไรคือสิ่งที่เป็นที่โปรดปราน / ต่อต้าน