मैं एक ढांचा बनाने की कोशिश कर रहा हूं जो लोगों को इंटरफ़ेस को लागू करके हमारी मूल कार्यक्षमता को विस्तारित करने की अनुमति देता है। नीचे इस इंटरफ़ेस का एक संक्षिप्त उदाहरण है।विधि पैरामीटर बनाम पैरामीटर ऑब्जेक्ट
public interface MyInterface
{
IData GetData(string p1, char p2, double p3);
}
हाल ही में, हम इस इंटरफेस (मैं जानता हूँ कि मैं निर्भर कोड को तोड़ने नहीं करना चाहिए, लेकिन सच है कि हम किसी भी 3 पार्टियों अभी तक इस इंटरफेस को लागू करने की जरूरत नहीं है है संशोधित करने के लिए तय कर लिया है, तो हम एक मौका इस इंटरफ़ेस को सही तरीके से कार्यान्वित करने के लिए "डू-ओवर" के लिए)।
हमारे सॉफ़्टवेयर के लिए सही ढंग से काम करने के लिए हमें इस इंटरफ़ेस में 2 और पैरामीटर जोड़ने की आवश्यकता है। दो तरीके हम की सोच रहे हैं सिर्फ इस तरह हस्ताक्षर करने के लिए उन्हें जोड़ रहे हैं:
public interface MyInterface
{
IData GetData(string p1, char p2, double p3, bool p4, DateTime p5);
}
या द्वारा इस
public class MyParameters
{
public bool p4 { get; set; }
public DateTime p5 { get; set; }
}
की तरह एक पैरामीटर वस्तु बनाने और उन्हें इतना की तरह विधि के अंत में जोड़ने :
public interface MyInterface
{
IData GetData(string p1, char p2, double p3, MyParameters p4);
}
मैं मार्गदर्शन के कुछ प्रकार के लिए देख रहा हूँ जो रास्ते में "सबसे" सही आगे बढ़ने के लिए रास्ता है। मैं दोनों श्रेणियों में पेशेवरों और विपक्ष को देख सकता हूं, लेकिन मैं नहीं चाहता कि मेरी पूर्वाग्रह मुझे गलत रास्ते से आगे ले जाएं।
अपने मुख्य चिंताओं में से कुछ हैं:
- सॉफ्टवेयर के तानाना - मैं यूजर इंटरफेस को लागू करने
- अनुरक्षणीयता से बातें मैं की अभी तक नहीं सोचा ऐसा करने में सक्षम होना चाहता हूँ - आदर्श रूप में, मैं कोड है कि GetData() फिर से कॉल
- स्वच्छ एपीआई के लिए जिम्मेदार है स्पर्श करने की आवश्यकता नहीं करना चाहते हैं - एक 3 पार्टी डेवलपर चापलूसी मैं समाधान मैं पर पहुंचने बनाने के लिए नहीं करना चाहती
मुझे यह भी पता नहीं है कि इस मुद्दे के लिए मार्गदर्शन प्राप्त करने के लिए ऑनलाइन पूछना क्या प्रश्न है। मुझे एहसास है कि जवाब "यह निर्भर करता है" (चीजों पर कैसे संबंधित पी 1-पी 5 गेटडाटा() फ़ंक्शन के उद्देश्य से संबंधित हैं), लेकिन क्या कोई मुझे प्रश्नों की एक सूची में इंगित कर सकता है, मुझे मूल्यांकन करने में मेरी सहायता करने के लिए मुझे पूछना चाहिए क्या एक समाधान दूसरे की तुलना में बेहतर है?
एक अच्छा विचार लगता पैरामीटर प्रकार के लिए एक इंटरफेस है, लेकिन विचार है कि इंटरफेस versioned नहीं किया जा सकता है, अगर एपीआई तो कोई भी मौजूदा तोड़ने के बिना पैरामीटर प्रकार में जोड़ने के साथ साथ कार्यक्षमता कर सकते हैं (जैसे कि एक और पैरामीटर जोड़ने) फैल जाएगा करने के लिए कोड। –