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