2009-11-07 27 views
11

यदि आपके पास कक्षा के लिए डेटा है जिसे संशोधित किया जाएगा और पूरे कार्यक्रम में बनाए रखा जाना चाहिए, लेकिन केवल एक सदस्य फ़ंक्शन में उपयोग किया जाता है, तो क्या यह वैरिएबल को स्थानीय स्थिर चर दिनचर्या है कि यह कक्षा में सदस्य है या इसे बनाते हैं?स्थैतिक चर बनाम सदस्य

उत्तर

15

प्रश्न यह नहीं है कि "डेटा पूरे कार्यक्रम में उपयोग किया जाएगा", बल्कि "यदि आप इस वर्ग के दो ऑब्जेक्ट्स बनाते हैं, तो क्या आप चाहते हैं कि वे यह डेटा साझा करें?" यदि हां, तो इसे स्थिर बनाएं। यदि नहीं, तो मत करो।

+2

धन्यवाद। मैं भूल गया कि वर्ग सदस्य कार्यों में भी स्थानीय स्थैतिक चर उस वर्ग की सभी वस्तुओं द्वारा साझा किए जाते हैं। – Anonymous

4

मैं तर्क दूंगा कि ज्यादातर मामलों में, आपको कभी भी स्थानीय स्थैतिक चर का उपयोग नहीं करना चाहिए, और इसके बजाय स्थिर सदस्य चर का उपयोग करना चाहिए। तब प्रश्न खराब हो जाता है कि उस चर को वर्ग के उदाहरणों के बीच साझा किया जाना चाहिए या नहीं।

1

एक स्थिर चर के रूप में एक स्थानीय चर घोषित करना मतलब है कि आपकी विधि में अब वस्तु है, वस्तु के राज्य से अलग है। इस कोड को बनाए रखने के दौरान यह कई गलतियों का कारण बन सकता है (जैसे कॉपी कन्स्ट्रक्टर कार्यान्वयन, असाइनमेंट, क्रमबद्धता) और इसे पढ़ने के दौरान (अस्पष्ट विधि व्यवहार)।
स्थैतिक स्थानीय लोगों का उपयोग करने से बचें जब तक कि आपके पास कुछ अच्छा कारण न हो (केवल एक ही जिसे मैं सोच सकता हूं सिंगल थ्रेडेड सिंगलेटोन कार्यान्वयन है)।

संबंधित मुद्दे