दो में से, मेरी प्राथमिकता पहली विधि है:
function insertIntoDatabase(Account account, Otherthing thing) {
database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue());
}
कारण यह है कि परिवर्तन सड़क के नीचे या तो ऑब्जेक्ट के लिए किए गए परिवर्तन, जब तक कि परिवर्तन उन गेटर्स को संरक्षित करते हैं ताकि परिवर्तन ऑब्जेक्ट के बाहर पारदर्शी हो, तो आपके पास बदलने के लिए कम कोड और परीक्षण और एप्लिकेशन को बाधित करने की कम संभावना है।
यह सिर्फ मेरी विचार प्रक्रिया है, ज्यादातर इस बात पर आधारित है कि मुझे इस प्रकृति की चीजों को कैसे काम करना और संरचना करना पसंद है और जो लंबे समय में काफी प्रबंधनीय और रखरखाव योग्य साबित होती हैं।
मैं नामकरण सम्मेलनों में नहीं जा रहा हूं, लेकिन यह बताऊंगा कि हालांकि इस पद्धति में "डेटाबेस" शब्द है, लेकिन भंडारण तंत्र सड़क को बदल सकता है। दिखाए गए कोड से, फ़ंक्शन को डेटाबेस स्टोरेज प्लेटफ़ॉर्म पर उपयोग किए जा रहे कुछ भी बांधना नहीं है - या भले ही वह डेटाबेस हो। हमने सिर्फ इसलिए मान लिया क्योंकि यह नाम में है। फिर, यह मानते हुए कि उन गेटर्स को हमेशा संरक्षित रखा जाता है, इन वस्तुओं को कैसे / कहाँ संग्रहीत किया जाता है, यह बदलना आसान होगा।
मैं फ़ंक्शन और दो ऑब्जेक्ट पर फिर से विचार करूंगा, क्योंकि आपके पास एक फ़ंक्शन है जिसमें दो ऑब्जेक्ट संरचनाओं पर निर्भरता है, और विशेष रूप से नियोजित किए जाने वाले गेटर्स हैं। यह भी ऐसा लगता है कि यह फ़ंक्शन उन दो वस्तुओं को एक संचयी चीज़ में बांध रहा है जो कि लगातार बनी रहती है। मेरी आंत मुझे बता रही है कि एक तीसरी वस्तु समझ में आ सकती है। मुझे इन वस्तुओं के बारे में और जानने की आवश्यकता है कि वे वास्तविकता और प्रत्याशित रोडमैप में कैसे संबंधित हैं। लेकिन उस दिशा में मेरा पेट झुक रहा है।
जैसे ही कोड अब खड़ा होता है, सवाल यह होता है कि "यह कार्य कहाँ और कैसे होना चाहिए?" क्या यह अकाउंट का हिस्सा है, या OtherThing? यह कहाँ जाता है?
मुझे लगता है कि पहले से ही एक तीसरा ऑब्जेक्ट "डेटाबेस" है, और मैं इस फ़ंक्शन को उस ऑब्जेक्ट में डालने की दिशा में झुकाव कर रहा हूं, और फिर यह हो जाता है कि ऑब्जेक्ट एक खाता और एक अन्य को संभालने में सक्षम होने के लिए काम करते हैं, रूपांतरित करते हैं, और फिर परिणाम भी जारी रखते हैं ।
यदि आप के रूप में दूर जाना था कि 3 वस्तु एक वस्तु-संबंधपरक मानचित्रण (ORM) पैटर्न, सभी बेहतर के अनुरूप है। यह कोड के साथ काम करने वाले किसी के लिए भी बहुत स्पष्ट हो जाएगा "आह, यह वह जगह है जहाँ खाता और OtherThing एक साथ तोड़े जाते हैं और बने रहते हैं"।
लेकिन यह आगे की वस्तु को पेश करने के लिए भी समझ में आता है, जो एक खाता और एक अन्य टाइपिंग को संयोजित करने और बदलने का काम संभालता है, लेकिन स्थायी के यांत्रिकी को नहीं संभालता है। यदि आप इन दो वस्तुओं के साथ या उनके बीच बहुत अधिक इंटरैक्शन का अनुमान लगाते हैं, तो मैं ऐसा करूंगा क्योंकि मैं चाहता हूं कि हठ बिट्स एक ऐसी वस्तु में फैले, जो केवल दृढ़ता का प्रबंधन करती है।
मैं डिजाइन को बनाए रखने के लिए गोली मारूंगा ताकि कोई भी एक खाता, अन्य, या तीसरी ओआरएम वस्तु को अन्य तीन को भी बदले बिना बदला जा सके। जब तक कोई अच्छा कारण न हो, मैं चाहता हूं कि अकाउंट और अदरंग स्वतंत्र रहें और एक-दूसरे के आंतरिक कामकाज और संरचनाओं को न जानें।
बेशक, अगर मुझे पूरा संदर्भ पता था कि यह होने जा रहा है, तो मैं अपने विचारों को पूरी तरह से बदल सकता हूं। फिर, यह सिर्फ यह है कि जब मैं इस तरह की चीजों को देखता हूं, तो मैं कैसा लगता हूं।