2010-04-09 11 views
11

मैं कुछ कक्षाएं लिख रहा हूं जिनमें सभी के पास सामान्य प्रकार के तर्क हैं, लेकिन मुझे कक्षाओं को अधिभारित करने की आवश्यकता है क्योंकि मुझे विभिन्न परिदृश्यों में विभिन्न तर्कों की आवश्यकता है। असल में, मेरे पासमुझे जेनेरिक क्लास परिभाषाओं के साथ अपनी फाइलों का नाम क्या देना चाहिए?

public class MyGenericClass<T> { ... } 
public class MyGenericClass<T, K> { ... } 
public class MyGenericClass<T, K, L> { ... } 
// it could go on forever, but it won't... 

मैं उन्हें एक ही नामस्थान में चाहता हूं, लेकिन प्रति वर्ग एक स्रोत फ़ाइल में चाहता हूं। मुझे फाइलों का नाम क्या देना चाहिए? क्या कोई सर्वोत्तम अभ्यास है?

+2

मुझे नहीं लगता था कि एक ही नाम के साथ विभिन्न वर्गों को बनाना संभव है लेकिन सामान्य तर्कों की एक अलग संख्या है। संपादित करें: ओह, यह सी # है, जावा नहीं। मुझे संदेह है कि आप जेनेरिक वर्गों को संभालने के मजाकिया तरीके से जावा में ऐसा कर सकते हैं। –

+0

क्या माइक्रोसॉफ्ट 4.0 में 'टुपल' कक्षा के साथ ऐसा नहीं करता है? –

+0

उदाहरण के लिए देखें, टपल - आकार 1 टपल की एक टपल का प्रतिनिधित्व करता है - आकार 2 टपल की एक टपल का प्रतिनिधित्व करता है - आकार का एक टपल का प्रतिनिधित्व करता है 3 – JasonTrue

उत्तर

9

मैंने देखा है लोगों

MyGenericClass`1, MyGenericClass`2 or MyGenericClass`3 

का उपयोग करें (संख्या जेनेरिक पैरामीटर की संख्या है)।

मुझे लगता है कि जब आप कॉल करते हैं तो आपको टाइपनाम के रूप में मिलता है। कक्षा पर टॉस्ट्रिंग।

+1

इसके अलावा एक्सएमएल दस्तावेज़ इसका उपयोग करते हैं, और आईओसी परिभाषा –

+3

'टॉस्ट्रिंग()' तर्क अब तक के बारे में चर्चाओं में मैंने सबसे अच्छा देखा है। जब तक अगले दिन या तो कुछ अनजान नहीं होता है, तो शायद यह है कि मैं क्या करूँगा। –

+0

सहमत हुए। यह कोड कवरेज परिणामों में भी आता है। –

1

मुझे लगता है कि आपको सी # समुदाय में एक ही नाम के साथ एक सामान्य वर्ग के प्रत्येक संस्करण के लिए अलग-अलग फ़ाइलों का पक्ष लेने में बहुत अधिक मतभेद नहीं मिलेगा; यदि आप वर्णन कर रहे हैं, तो मैं केवल एक का उपयोग करना पसंद करता हूं, हालांकि यदि आप प्रत्येक भिन्नता के लिए आवश्यक जटिल/लंबा है तो मैं आपके द्वारा प्रस्तावित किए जाने वाले मामले के लिए एक केस देख सकता हूं। आम तौर पर मैं फ़ाइल नाम के रूप में प्रश्न के वर्ग का नाम उपयोग करता हूं।

अगर मैं अलग-अलग फ़ाइलों में भिन्नताओं को अलग करने जा रहा था, तो मैं माइकल के समाधान का उपयोग कर देख सकता था, हालांकि यह उन लोगों के लिए थोड़ा दर्दनाक होगा जो कमांड लाइन पर यूनिक्स-स्टाइल टूल का उपयोग करते हैं, उदाहरण के लिए, सिगविन या एंडलिंक्स। मैं शायद अंडरस्कोर या कोई विराम चिह्न का उपयोग नहीं करता। या प्रत्यय के रूप में 1 पी, 2 पी, 3 पी की तरह कुछ।

1

मैं उन्हें एक ही फाइल में तब तक रखूंगा जब तक वे बड़े न हों (आमतौर पर वे नहीं होंगे, सबसे अधिक टी के साथ एक को छोड़कर)।

एनईटी फ्रेमवर्क दिशानिर्देशों में जो कुछ भी मिलता है उसके अलावा कक्षाओं के नामकरण के लिए वास्तव में सबसे अच्छा अभ्यास नहीं है, क्योंकि यह प्रोग्रामिंग के रचनात्मक पक्ष का हिस्सा है, और दुर्भाग्यवश एसएससीएलआई केवल 2.0 पर वापस आती है ताकि आप नहीं कर सकें वहां बहुत मदद मिलती है।

1

मैं आमतौर पर उपयोग करने Classname.1.cs, Classname.2.cs, आदि ... जहां नंबर सामान्य तर्क की संख्या, ढांचे में `` 1 notation used in the framework documentation (and in XML documentation in your sourcecode). Sometimes you also have a class with no generic arguments (similar to ICollection and ICollection` के समान) है, और फ़ाइल नाम सिर्फ वर्ग के नाम होगा , जैसा सोचा था। बैकटिक का उपयोग करने के विपरीत, इसका लाभ यह है कि आपके पास फ़ाइल नाम में कोई अमान्य वर्ण नहीं होंगे। सभी फाइल सिस्टम, वर्जनिंग सिस्टम, ऑपरेटिंग सिस्टम नाम में बैकटिक चरित्र की अनुमति नहीं देते हैं।

2

इस स्थिति पैदा होती है जब मैं एक ही परंपरा है कि सी # जेनरिक, { और } बजाय < और > उपयोग करने के लिए क्योंकि कोण कोष्ठक या तो XML या फ़ाइल नामों में अनुकूल नहीं हैं जिसके लिए एक्सएमएल प्रलेखन टिप्पणी में प्रयोग किया जाता है को अपनाने लेकिन घुंघराले लोग हैं। तो कुछ इस तरह:

MyClass {टी} .cs

MyClass {टी, कश्मीर} .cs

तुम सच में बहुत सारे पैरामीटर हालांकि है, तो यह एक के रूप में कुछ हद तक बोझल प्राप्त कर सकते हैं नामकरण योजना, तो मैं बैकटिक के सीएलआर सम्मेलन को अपनाने के बाद पैरामीटर गिनती, उदाहरण के लिए

MyClass`1।सीएस

MyClass`2.cs

या मिश्रण और दो योजनाओं से मेल स्थिति फिट बैठता है के रूप में।

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