क्या विधि / फ़ंक्शन मापदंडों के रूप में अनन्य ID बनाम ऑब्जेक्ट का उपयोग करने के विरुद्ध या इसके लिए कोई उद्देश्य तर्क हैं? (और अन्य वस्तुओं के सदस्य?)। विशेष रूप से वैधानिक रूप से टाइप की गई भाषाओं के संदर्भ में (C # / Java / Scala)
वस्तु का अधिकार:
- अधिक प्रकार के कॉल। आईडी के साथ तर्कों के गलत आदेश का जोखिम है। इसे कम किया जा सकता है, हालांकि प्रत्येक वर्ग के लिए एक 'मिनी' वर्ग रखकर जो केवल उस वर्ग की आईडी को संग्रहीत करता है।
- दृढ़ता से एक बार प्राप्त करें, फिर से प्राप्त करने की आवश्यकता नहीं है
- आईडी के साथ, यदि आईडी का प्रकार बदलता है, तो int -> लंबा कहें, तो गलतियों की संभावना के साथ बोर्ड में बदलाव की आवश्यकता होगी .. (सौजन्य: https://softwareengineering.stackexchange.com/a/284734/145808 )
आईडी का उपयोग करने के नियम:
- ज्यादातर समय वास्तविक वस्तु की कोई आवश्यकता नहीं होती है, बस यूनिकिड करेगा, इसलिए आईडी होने से समय को दृढ़ता से प्राप्त करने से बचाता है।
इन तकनीकों का एक मिश्रण, जहाँ तक मैं देख सकता हूँ, दोनों की ही सहमति होगी और न ही दोनों के पेशेवरों की।
यह देखते हुए कि यह एक संक्षिप्त रूप से परिभाषित समस्या है, मुझे आशा है कि उद्देश्य उत्तर हैं और नहीं- "मुझे लगता है" या "मुझे पसंद है" प्रकार ... :-)।
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.
}
मैं केवल आईडी क्यों रखना चाहूंगा और पूर्ण सदस्य नहीं? जब मैं पुस्तक के बारे में जानकारी प्राप्त करता हूं, तो मुझे यह जानने की आवश्यकता नहीं है कि किसने दान किया है या उधार लिया है। दान और उधार के खेतों को आबाद करने के लिए उनकी पूरी जानकारी प्राप्त करना एक ओवरकिल है।
बेशक, ये केवल मेरे बिंदु हैं। मुझे यकीन है कि मैं चीजों को याद कर रहा हूं इसलिए जानना चाहता हूं कि पक्ष में / खिलाफ क्या बिंदु हैं।