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