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