मुझे कुछ फ़ंक्शंस के साथ एक कक्षा मिली है जो वास्तव में केवल 'सहायक' विधियां हैं जो क्लाइंट कोड अन्य सार्वजनिक एक्सेसर गुणों/विधियों के साथ स्वयं ही कर सकता है, और मुझे इस बात की अनिश्चितता है कि मुझे इन्हें गेटटर के साथ गुणों के रूप में परिभाषित करना चाहिए या नहीं , उदाहरण विधियां, या स्थैतिक विधियां जो पैरामीटर के रूप में उदाहरण लेती हैं। इसके अलावा, मुझे कक्षा से निकाला गया एक इंटरफ़ेस भी मिला है जिसका उपयोग निर्माण के अलावा कहीं भी कहीं भी किया जाता है, ताकि मेरे कोड को इंटरफ़ेस के विरुद्ध लागू किसी भी वर्ग का उपयोग करने की अनुमति मिल सके।सी # में सहायक तरीके: स्टेटिक या गैर स्थैतिक?
सवाल यह है कि, जो एक डिजाइन बिंदु से सर्वोत्तम है? उदाहरण के लिए, इस वर्ग से प्रारंभिक होने का एक साधन के रूप:,
class Person : IPerson {
private string name;
public string Name { get { return this.name; } }
// Property with getter
public string Initial { get { return this.name.Substring(0,1); } }
// Instance method
public string GetInitial { return this.name.Substring(0,1); }
// Static method
public static string GetInitial(IPerson person) {
return person.Name.Substring(0,1);
}
}
संपत्ति छोटे, अधिक पठनीय ग्राहक कोड के लिए खुद को उधार देता है, लेकिन अपने स्वयं के कार्यान्वयन लिखने के IPerson के खिलाफ लागू करने की आवश्यकता होगी किसी को भी उदाहरण होगा के रूप में तरीका।
स्थैतिक विधि का मतलब होगा कि कक्षाओं को लागू करने के लिए स्वयं को लिखने की आवश्यकता नहीं होगी, और मेरा कोड गारंटी दे सकता है कि नाम के आधार पर प्रारंभिक निर्धारित कैसे किया जाता है, लेकिन इसका मतलब है कि यह इंटरफ़ेस पर नहीं हो सकता है, और क्लाइंट कोड थोड़ा और वर्बोज़।
क्या यह सिर्फ नीचे आ गया है कि कक्षाओं को कार्यान्वित करने की अनुमति देना अच्छा नहीं है कि कैसे सहायक तरीके की गणना की जाती है?
संपादित करें: मामूली तरफ, तो मुझे सबसे अच्छा अभ्यास टैग क्यों नहीं जोड़ेगा?
ऐसा लगता है कि अभी तक कोई सर्वोत्तम अभ्यास टैग नहीं है। नए टैग बनाने के लिए आपको कम से कम 1500 प्रतिष्ठा की आवश्यकता है। – M4N
यह अजीब है .. निश्चित रूप से था, मैंने इसे अतीत में उपयोग किया है। – Flynn1179
मेटा टैग की मौत (जैसे सर्वोत्तम प्रथाओं): http://blog.stackoverflow.com/2010/08/the-death-of-meta-tags/ – M4N