मुझे यह उद्धरण " द जॉय ऑफ क्लोजर " में मिला । 32, लेकिन किसी ने पिछले हफ्ते रात के खाने पर मुझसे एक ही बात कही और मैंने इसे अन्य स्थानों पर भी सुना है:
[A] ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए नकारात्मक, फ़ंक्शन और डेटा के बीच का युग्मन है।
मैं समझता हूं कि किसी एप्लिकेशन में अनावश्यक कपलिंग खराब क्यों है। इसके अलावा, मैं यह कहते हुए सहज हूं कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में भी म्यूटेबल स्टेट और इनहेरिटेंस से बचा जाना चाहिए। लेकिन मैं यह देखने में विफल हूं कि कक्षाओं पर चिपके हुए कार्य स्वाभाविक रूप से खराब क्यों हैं।
मेरा मतलब है, किसी फंक्शन को क्लास में जोड़ना ऐसा लगता है जैसे जीमेल में किसी मेल को टैग करना या किसी फाइल को फोल्डर में चिपका देना। यह एक संगठनात्मक तकनीक है जो आपको इसे फिर से खोजने में मदद करती है। आप कुछ मापदंड चुनते हैं, फिर चीजों को एक साथ रखते हैं। OOP से पहले, हमारे प्रोग्राम फाइलों में बहुत बड़े बैग थे। मेरा मतलब है, आपको कहीं न कहीं फंक्शन लगाने होंगे। उन्हें व्यवस्थित क्यों नहीं किया?
यदि यह प्रकारों पर घूमा हुआ हमला है, तो वे केवल यह क्यों नहीं कहते हैं कि किसी फ़ंक्शन में इनपुट और आउटपुट के प्रकार को प्रतिबंधित करना गलत है? मुझे यकीन नहीं है कि मैं इससे सहमत हो सकता हूं, लेकिन कम से कम मैं तर्क समर्थक और चोर प्रकार की सुरक्षा से परिचित हूं। यह मुझे एक अलग चिंता की तरह लग रहा है।
निश्चित रूप से, कभी-कभी लोग इसे गलत कर देते हैं और गलत वर्ग पर कार्यक्षमता डालते हैं। लेकिन अन्य गलतियों की तुलना में, यह एक बहुत ही मामूली असुविधा की तरह लगता है।
तो, क्लजुरे के नाम स्थान हैं। ओओपी में एक वर्ग पर एक समारोह को कैसे चिपकाया जाता है, जो क्लोजर में एक नाम स्थान पर एक फ़ंक्शन को चिपकाने से अलग है और यह इतना बुरा क्यों है? याद रखें, किसी वर्ग में कार्य केवल उस वर्ग के सदस्यों पर ही संचालित नहीं होते हैं। Java.lang.StringBuilder को देखें - यह किसी भी संदर्भ प्रकार पर या ऑटो-बॉक्सिंग के माध्यम से किसी भी प्रकार पर काम करता है।
पुनश्च यह उद्धरण एक पुस्तक का संदर्भ देता है जिसे मैंने नहीं पढ़ा है: लेडा में मल्टीपरडीग्म प्रोग्रामिंग: टिमोथी बुद्ध, 1995 ।