एक घटना आधारित घटक का उपयोग करते समय मैं अक्सर रखरखाव के चरण में कुछ दर्द महसूस करता हूं।
चूंकि निष्पादित कोड सभी के आसपास विभाजित है, इसलिए यह पता लगाना काफी कठिन हो सकता है कि सभी कोड भाग क्या होंगे जो रनटाइम में शामिल होंगे।
जब कोई नया ईवेंट हैंडलर जोड़ता है, तो यह समस्याओं को डीबग करने के लिए सूक्ष्म और कठिन हो सकता है।
टिप्पणियों से संपादित करें: यहां तक कि बोर्ड पर कुछ अच्छे अभ्यासों के साथ, जैसे एप्लिकेशन वाइड इवेंट बस और हैंडलर ऐप के अन्य भाग में व्यवसाय का प्रतिनिधित्व करते हैं, एक ऐसा क्षण होता है जब कोड को पढ़ना मुश्किल हो जाता है क्योंकि इसमें बहुत कुछ होता है कई अलग-अलग स्थानों से पंजीकृत हैंडलर (विशेष रूप से सच है जब एक बस है)।
फिर अनुक्रम आरेख जटिल दिखना शुरू हो जाता है, यह पता लगाने के लिए समय व्यतीत होता है कि क्या हो रहा है और डिबगिंग सत्र गड़बड़ हो जाता है (हैंडलर प्रबंधक पर ब्रेकपॉइंट हैंडलर पर पुनरावृत्ति करते समय, विशेष रूप से async हैंडलर के साथ हर्षित और इसके शीर्ष पर कुछ फ़िल्टरिंग)।
//////////////
उदाहरण
मेरे पास एक सेवा है जो सर्वर पर कुछ डेटा पुनर्प्राप्त कर रही है। क्लाइंट पर हमारे पास एक बुनियादी घटक है जो कॉलबैक का उपयोग करके इस सेवा को कॉल कर रहा है। घटक के उपयोगकर्ताओं को विस्तार बिंदु प्रदान करने के लिए और विभिन्न घटकों के बीच युग्मन से बचने के लिए, हम कुछ घटनाओं को निकाल रहे हैं: क्वेरी भेजे जाने से पहले एक, जब जवाब वापस आ रहा है और एक विफलता के मामले में एक और। हमारे पास हैंडलर का एक मूल सेट है जो पूर्व-पंजीकृत हैं जो घटक के डिफ़ॉल्ट व्यवहार को प्रदान करते हैं।
अब घटक के उपयोगकर्ता (और हम घटक के उपयोगकर्ता भी हैं) व्यवहार पर कुछ परिवर्तन करने के लिए कुछ हैंडलर जोड़ सकते हैं (क्वेरी, लॉग, डेटा विश्लेषण, डेटा फ़िल्टरिंग, डेटा मालिश, यूआई फैंसी एनीमेशन, श्रृंखला एकाधिक अनुक्रमिक प्रश्नों को संशोधित करें) , जो कुछ)। तो कुछ संचालकों को कुछ अन्य लोगों से पहले / बाद में निष्पादित किया जाना चाहिए और वे आवेदन में बहुत सारे अलग-अलग प्रवेश बिंदुओं से पंजीकृत हैं।
थोड़ी देर बाद, ऐसा हो सकता है कि एक दर्जन या अधिक हैंडलर पंजीकृत हैं, और इसके साथ काम करना थकाऊ और खतरनाक हो सकता है।
यह डिजाइन उभरा क्योंकि वंशानुक्रम का उपयोग पूरी तरह से गड़बड़ होने लगा था। ईवेंट सिस्टम का उपयोग एक प्रकार की रचना में किया जाता है, जहां आपको अभी तक नहीं पता है कि आपके कंपोजिट क्या होंगे।
उदाहरण का अंत
//////////////
इसलिए मैं सोच रहा हूं कि दूसरे लोग इस तरह के कोड से कैसे निपट रहे हैं। इसे लिखते और पढ़ते दोनों।
क्या आपके पास कोई ऐसा तरीका या उपकरण है जो आपको बहुत दर्द के बिना इस तरह के कोड लिखने और बनाए रखने देता है?