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