सामान्य वैश्विक चर में बुरा है। अंतर्निहित सिद्धांत वे बुरा क्यों हैं कि आप अपने पैकेज में इंटरकनेक्शन को कम करना चाहते हैं। इन इंटरकनेक्शन अक्सर कार्यों के साइड इफेक्ट्स का कारण बनते हैं, यानी यह न केवल इनपुट तर्कों पर निर्भर करता है कि नतीजा क्या है, बल्कि कुछ वैश्विक चर के मूल्य पर भी निर्भर करता है। खासकर जब कार्यों की संख्या बढ़ती है, तो सही और नरक को डीबग करना मुश्किल हो सकता है।
आर में वैश्विक चर के लिए यह SO post देखें।
अपनी टिप्पणी के जवाब में संपादित करें: एक विकल्प केवल उन कार्यों के लिए आवश्यक जानकारी को पास करने के लिए हो सकता है, जिनकी आवश्यकता है। आप एक नया वस्तु जो इस जानकारी शामिल बना सकते हैं:
token_information = list(token1 = "087091287129387",
token2 = "UA2329723")
और एक तर्क के रूप में यह है करने के लिए सभी कार्यों कि इस जानकारी की आवश्यकता की आवश्यकता होती है:
do_stuff = function(arg1, arg2, token)
do_stuff(arg1, arg2, token = token_information)
इस तरह से यह कोड से स्पष्ट है कि फ़ंक्शन में टोकन जानकारी की आवश्यकता होती है, और आप फ़ंक्शन को अपने आप डीबग कर सकते हैं। इसके अलावा, फ़ंक्शन का कोई साइड इफेक्ट नहीं होता है, क्योंकि इसका व्यवहार पूरी तरह से इसके इनपुट तर्कों द्वारा निर्धारित होता है। एक सामान्य उपयोगकर्ता स्क्रिप्ट कुछ ऐसा दिखाई देगी:
token_info = create_token(token1, token2)
do_stuff(arg1, arg2, token_info)
मुझे आशा है कि इससे चीजों को और स्पष्ट हो जाएगा।
स्रोत
2012-09-26 09:29:50
क्या आप अपनी विशिष्ट स्थिति पर और विस्तार कर सकते हैं? फिर हम आपको विकल्पों को खोजने में मदद कर सकते हैं, अधिमानतः ... –
http://stackoverflow.com/questions/5526322/examples-of-the-perils-of-globals-in-r-and-stata –