सलाह है कि मैं बार बार उद्धृत सुना है का एक अच्छा टुकड़ा यह है:
, तुम क्या स्वीकार में उदार आप क्या प्रदान में सटीक हो।
अपने एपीआई को डिजाइन करने के मामले में, मैं सुझाव दूंगा कि आपको एक इंटरफ़ेस लौटाया जाना चाहिए, ठोस प्रकार नहीं।
अपने उदाहरण विधि ले रहा है, मैं इसे इस प्रकार पुनर्लेखन चाहते हैं:
public IList<object> Foo()
{
List<object> retList = new List<object>();
// Blah, blah, [snip]
return retList;
}
महत्वपूर्ण यह है कि अपने आंतरिक कार्यान्वयन विकल्प है - एक सूची का उपयोग करने के लिए - फोन करने वाले को पता चला नहीं है, लेकिन आप कर रहे हैं एक उपयुक्त इंटरफ़ेस लौट रहा है।
फ्रेमवर्क विकास पर माइक्रोसॉफ्ट के अपने दिशानिर्देश विशिष्ट प्रकारों को वापस करने, इंटरफेस के पक्ष में सिफारिश करने के खिलाफ अनुशंसा करते हैं। (क्षमा करें, मुझे इसके लिए कोई लिंक नहीं मिला)
इसी प्रकार, आपके पैरामीटर जितना संभव हो उतना सामान्य होना चाहिए - सरणी को स्वीकार करने के बजाय, उचित प्रकार के एक आईनेमरेबल को स्वीकार करें। यह सरणी के साथ ही सूचियों और अन्य उपयोगी प्रकारों के साथ संगत है।
फिर से अपने उदाहरण विधि ले रहा है:
public IList<object> Foo(IEnumerable<object> bar)
{
List<object> retList = new List<object>();
// Blah, blah, [snip]
return retList;
}
(हाल ही में दो प्रतियों से मर्ज किए गए जवाब) –