मेरे पास एक बहुत ही सरल प्रश्न है जो कुछ समय के लिए मुझे परेशान कर रहा है जब मेरा कोड बढ़ने लगा है।
जब वे नेस्टेड फ़ंक्शन कॉल के लंबे मार्गों से गुजरते हैं, तो क्या मापदंडों को वैश्विक चर द्वारा प्रतिस्थापित किया जाना चाहिए?
मैं समझता हूं कि वैश्विक वातावरण एक कार्यक्रम की स्थिति को अप्रत्याशित बना सकता है क्योंकि कई फ़ंक्शन साझा चर को संशोधित कर सकते हैं, लेकिन फिर भी, वैश्विक स्थान चीजों को इतना आसान बना देता है।
मुझे खुद को समझाने दो:
functionA(){
x = something
functionB(x)
}
functionB(x){
functionC(x)
}
functionC(x){
finallyDoSomethingWithX(x)
}
finallyDoSomethingWithX(x){
x += 1 //Very dummy example ignoring pass by value, not reference.
}
द्वारा प्रतिस्थापित:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
मुझे लगता है कि दूसरा तरीका कार्यक्रम को इतनी स्वतंत्रता देता है क्योंकि पैरामीटर आसानी से जमा हो सकते हैं और कभी-कभी बहुत ही सीमित हो सकते हैं जब कोड का पुन: उपयोग किया जाना चाहिए, लेकिन साथ ही मुझे लगता है कि फ़ंक्शन एक मॉड्यूलर से संबंधित होने पर इसकी प्रतिरूपकता को ढीला कर देगा। उदाहरण के लिए, वैश्विक परिवेश में, पुन: प्रयोज्यता खोने पर भी, मैं finallyDoSomethingWithX
एक और परिवर्तनशील विभिन्न था के साथ काम करना चाहता हूं globalX
।
मुझे लगता है कि यह मेरे साथ हो रहा है क्योंकि मैं वास्तव में डिज़ाइन पैटर्न का उपयोग नहीं कर रहा हूं क्योंकि मैं जावास्क्रिप्ट में प्रोग्रामिंग कर रहा हूं, जो कि मेरे लिए मध्यम परियोजनाओं के लिए एक-स्क्रिप्ट-सौदों-के साथ सभी भाषा की तरह लगता है।
कोई सलाह? पैटर्न? जरूरत पड़ने पर मैं और विशिष्ट हो सकता हूं।