"कम से कम स्वीकार करें, लेकिन अधिकतम लौटाएं" जो मैं वकालत करता हूं। जब कोई विधि किसी वस्तु को वापस लाती है, तो हमें किस प्रकार की औचित्य को वास्तविक प्रकार वापस नहीं करना है और मूल प्रकार को वापस कर ऑब्जेक्ट की क्षमताओं को सीमित करना है। हालांकि यह एक प्रश्न उठाता है कि हम कैसे जानते हैं कि "अधिकतम" (वास्तविक प्रकार) क्या होगा जब हम एक इंटरफ़ेस डिज़ाइन करेंगे। जवाब बहुत आसान है। केवल चरम मामलों में जहां इंटरफेस डिजाइनर एक खुले इंटरफेस को डिजाइन कर रहा है, जिसे एप्लिकेशन/घटक के बाहर लागू किया जाएगा, वे नहीं जानते कि वास्तविक रिटर्न प्रकार क्या हो सकता है। एक स्मार्ट डिजाइनर को हमेशा यह विचार करना चाहिए कि विधि क्या करनी चाहिए और क्या इष्टतम/जेनेरिक रिटर्न प्रकार होना चाहिए।
उदा। यदि मैं ऑब्जेक्ट्स के वेक्टर को पुनर्प्राप्त करने के लिए एक इंटरफ़ेस डिज़ाइन कर रहा हूं, और मुझे पता है कि लौटाई गई वस्तुओं की गिनती चरणीय होने जा रही है, तो मैं हमेशा एक स्मार्ट डेवलपर हमेशा एक सूची का उपयोग करूंगा। अगर कोई ऐरे वापस करने की योजना बना रहा है, तो मैं उसकी क्षमताओं पर सवाल उठाऊंगा, जब तक कि वह सिर्फ उस परत से डेटा वापस नहीं कर लेता है जिसके पास उसका स्वामित्व नहीं है। और शायद यही कारण है कि FxCop ICollection (सूची और ऐरे के लिए सामान्य आधार) के लिए वकालत करता है।
उक्त जा रहा है ऊपर, वहाँ अन्य चीजों की जोड़ी पर विचार करने के
यदि दिए गए डेटा परिवर्तनशील या अपरिवर्तनीय
होना चाहिए दिए गए डेटा से अधिक कॉल करने में साझा किया है, तो कर रहे हैं
LINQ आलसी मूल्यांकन के संबंध में मुझे यकीन है कि 95% + सी # उपयोगकर्ता आंतों को नहीं समझते हैं। यह इतना गैर-ओह-आश है। ओओ विधि आमंत्रण पर ठोस राज्य परिवर्तन को बढ़ावा देता है। LINQ आलसी मूल्यांकन अभिव्यक्ति मूल्यांकन पैटर्न पर रनटाइम राज्य परिवर्तन को बढ़ावा देता है (कुछ गैर-उन्नत उपयोगकर्ता हमेशा पालन नहीं करते हैं)।
स्रोत
2011-12-06 15:36:49
ओपी इंगित करता है कि, यदि एक ठोस वर्ग को वापस करने की आवश्यकता है, तो FxCop 'सूची' की बजाय 'संग्रह ' को वापस करने की सलाह देता है। यह भी देखें [संग्रह बनाम सूची आप अपने इंटरफेस पर क्या उपयोग करना चाहिए?] (Http://stackoverflow.com/q/271710/1497596)। –
DavidRR