विधि जंजीर एक और विधि के लिए बुलाया जा करने के लिए परिणाम के क्रम में वस्तु वापस लौटने वाली वस्तु विधियों का अभ्यास है। ऐशे ही:
participant.addSchedule(events[1]).addSchedule(events[2]).setStatus('attending').save()
यह एक अच्छा अभ्यास माना जाता है, क्योंकि यह पठनीय कोड, या "धाराप्रवाह इंटरफ़ेस" पैदा करता है। हालाँकि, मेरे लिए इसके बजाय ऑब्जेक्ट ओरिएंटेशन द्वारा निहित ऑब्जेक्ट कॉलिंग नोटेशन को तोड़ना प्रतीत होता है - परिणामस्वरूप कोड पिछली पद्धति के परिणाम के लिए क्रिया करने का प्रतिनिधित्व नहीं करता है , जो कि ऑब्जेक्ट ओरिएंटेड कोड आमतौर पर काम करने की उम्मीद है:
participant.getSchedule('monday').saveTo('monnday.file')
यह अंतर "परिणामी वस्तु को कॉल करने" की डॉट-नोटेशन के लिए दो अलग-अलग अर्थों का निर्माण करता है: चेनिंग के संदर्भ में, उपरोक्त उदाहरण प्रतिभागी वस्तु को बचाने के रूप में पढ़ेगा , हालांकि उदाहरण वास्तव में शेड्यूल को बचाने के लिए है। getSchedule द्वारा प्राप्त वस्तु।
मैं समझता हूं कि यहां अंतर यह है कि क्या तथाकथित विधि से कुछ वापस करने की उम्मीद की जानी चाहिए या नहीं (जिस स्थिति में यह पीछा करने के लिए खुद को तथाकथित वस्तु लौटाएगा)। लेकिन ये दोनों मामले केवल संकेतन से अलग नहीं हैं, केवल विधियों के शब्दार्थ से। जब विधि जंजीर का उपयोग नहीं किया जाता है, तो मुझे हमेशा पता चल सकता है कि पिछली कॉल के परिणाम से संबंधित एक विधि कॉल संचालित होती है - चाइनिंग के साथ, यह धारणा टूट जाती है, और मुझे पूरी श्रृंखला को समझने की पूरी प्रक्रिया करनी होगी कि वास्तविक वस्तु क्या है वास्तव में कहा जाता है। उदाहरण के लिए:
participant.attend(event).setNotifications('silent').getSocialStream('twitter').postStatus('Joining '+event.name).follow(event.getSocialId('twitter'))
अंतिम दो विधि कॉल getSocialStream के परिणाम को संदर्भित करते हैं, जबकि प्रतिभागी को संदर्भित करने से पहले। शायद यह वास्तव में चेन को लिखने के लिए बुरा व्यवहार है जहां संदर्भ बदल जाता है (यह है?), लेकिन फिर भी आपको लगातार जांचना होगा कि क्या समान दिखने वाले डॉट-चेन वास्तव में एक ही संदर्भ में रहते हैं, या केवल परिणाम पर काम करते हैं ।
मेरे लिए यह प्रतीत होता है कि सतही तौर पर पीछा करने की विधि पठनीय कोड का उत्पादन करती है, लेकिन डॉट-नोटेशन के अर्थ को ओवरलोड करने से केवल अधिक भ्रम पैदा होता है। जैसा कि मैं खुद को प्रोग्रामिंग गुरु नहीं मानता, मैं मानता हूं कि गलती मेरी है। तो मुझे क्या याद आ रही है? क्या मैं किसी तरह से गलत तरीके से पीछा करने की विधि को समझता हूं? क्या कुछ ऐसे मामले हैं जहाँ विधि-निर्धारण विशेष रूप से अच्छा है, या कुछ जहाँ यह विशेष रूप से बुरा है?
सिडेनोट: मैं समझता हूं कि इस प्रश्न को एक प्रश्न के रूप में देखा जा सकता है। हालांकि, यह नहीं है - मैं वास्तव में यह समझना चाहता हूं कि चाइनिंग को अच्छा अभ्यास क्यों माना जाता है, और मैं यह सोचने में गलत नहीं हूं कि यह अंतर्निहित वस्तु-उन्मुख संकेतन को तोड़ता है।
.
जो किसी भी मेहतोड रिटर्न मान को अनदेखा करेगा और हमेशा उसी वस्तु का उपयोग करके किसी भी जंजीर पद्धति को लागू करेगा।