2009-06-26 16 views
14

नामस्थानों और प्रायोजक कक्षाओं के लिए आप किस नामकरण सम्मेलन का उपयोग कर रहे हैं? (यानी कक्षाएं जो विस्तार विधि परिभाषाएं रखती हैं)विस्तार विधि नामस्थान और प्रायोजक कक्षाओं के लिए नामकरण सम्मेलन

क्या मानक/अनुशंसित .NET Framework नामकरण सम्मेलन है? ("फ्रेमवर्क डिज़ाइन दिशानिर्देश, द्वितीय संस्करण" पुस्तक केवल नामस्थानों का उपयोग नहीं करने पर मार्गदर्शन प्रदान करती है)।

उत्तर

7

नाम स्थान के लिए - मैं मानक रूपरेखा पर ध्यान केंद्रित करेंगे। नामस्थान नामों के लिए दिशानिर्देश। विस्तार विधियों को एक नामस्थान में रखें जहां उन्हें आमतौर पर उपयोग/अर्थात् अर्थात् संबद्ध किया जाएगा, और इसके लिए अतिरिक्त नामस्थान होने से बचें।

प्रायोजक वर्ग के लिए - इस मामले में, यह काफी महत्वहीन है। मैं एक वर्ग नाम चुनने की कोशिश करता हूं जो सार्थक है, लेकिन ऐसा कोई निश्चित दिशानिर्देश प्रतीत नहीं होता है।

यहां महत्वपूर्ण बात यह है कि प्रायोजक वर्ग कभी भी आपके विस्तार विधियों के उपयोगकर्ता द्वारा सीधे उपयोग/देखा नहीं जाता है। जब तक नामस्थान शामिल किया गया है, विस्तार विधि सही ढंग से पाई जाती है। मैं व्यक्तिगत रूप से अपने विस्तार विधियों के लिए jrummell के समान कुछ भी उपयोग करता हूं, लेकिन माइक्रोसॉफ्ट फ्रेमवर्क में इसका पालन नहीं करता है (इसका एक अच्छा उदाहरण Enumerable वर्ग है)।

+1

दोनों रीड और jrummell उत्तर अच्छे हैं। मैं इसे "द" उत्तर के रूप में चिह्नित करने जा रहा हूं क्योंकि यह अधिक गहराई में जाता है। हालांकि एक नोट - प्रायोजक वर्ग का नाम .NET भाषाओं में महत्वपूर्ण है जो एक्सटेंशन विधियों का समर्थन नहीं करते हैं, जहां शास्त्रीय स्थैतिक विधि कॉल इस्तेमाल किया जाना है। –

13

मैं किसी भी सरकारी सिफारिशों नहीं देखा है, लेकिन मैं [नाम स्थान] की तरह अपने एक्सटेंशन कक्षाओं का आयोजन किया गया है [className] एक्सटेंशन:

ProjectName.Web.Util.ControlExtensions 
ProjectName.Data.Util.CollectionExtensions 
+3

मैं वही करता हूं और मैं यह भी जोड़ता हूं कि मैं किसी भी अत्यधिक विशिष्ट स्थिर विस्तार विधि वर्ग को संबंधित नामस्थानों में स्थानांतरित करता हूं जहां उनका उपयोग किया जाएगा ताकि वे अन्य डेवलपर्स के लिए इंटेलिजेंस को क्लाउड नहीं कर सकें। तो दूसरे शब्दों में, मेरे विस्तार विधि वर्ग एक ही नामस्थान में आवश्यक वर्ग के रूप में आवश्यक नहीं हैं। – jpierson

+1

मैं कुछ ऐसा करता हूं लेकिन जब मैं कक्षा के बजाय * इंटरफेस * में विस्तार विधियों को जोड़ता हूं, तो मैं बदसूरत वर्ग नामों जैसे 'IMyInterfaceExtensions' के साथ समाप्त होता हूं, और ऐसा लगता है कि एक्सटेंशन क्लास स्वयं एक इंटरफ़ेस है :( –

संबंधित मुद्दे