2010-12-02 23 views
48

के लिए नामकरण सम्मेलन हम एक शब्दकोश चर का नाम कैसे देते हैं?एक सी # शब्दकोश

मेरी विधि में कहें कि मेरे पास Dictionary<string, List<string>> dictionary; है, जहां dictionary की कुंजी देश के नाम हैं और मान प्रांत/राज्य के नामों की सूचियां हैं। मुझे dictionary का नाम कैसे बदलना चाहिए?

मुझे पता है कि हम इस उदाहरण के लिए Country कक्षा बना सकते हैं। लेकिन कृपया इस विकल्प का जिक्र न करें क्योंकि मैं यहां अच्छे नामकरण सम्मेलन के बारे में सोच रहा हूं।

+0

आप एक मैपिंग फ़ंक्शन के रूप में एक शब्दकोश के बारे में सोच सकते हैं या आप इसे विशेष रूप से हैशिंग/लुकअप/इंडेक्स फ़ंक्शन के रूप में सोच सकते हैं। मैपिंग अधिक सामान्य है। एक गणित समारोह पर विचार करें जो सेल्सियस को फारेहीट में चिह्नित करता है जिसे कन्वर्टसेलसियस टोफरेनहेट नाम दिया जा सकता है। "करने के लिए" जोर देता है कि इनपुट स्थान/सेट फोकस है। वाई-बाय-एक्स बेहतर कैप्चर करता है कि एक शब्दकोश एक विशिष्ट प्रकार का मैपिंग है जो सेट-आधारित हैशिंग का उपयोग करता है। "द्वारा" जोर देता है कि आउटपुट स्पेस/सेट फोकस है। एक कुंजी बेकार है जब तक कि यह कुछ अनलॉक नहीं करता है। बस मेरी राय है, लेकिन मुझे उम्मीद है कि यह कुछ अंतर्दृष्टि देने में मदद करता है। – VoteCoffee

+0

एक और त्वरित नोट, आप इसे कैप्चर करना चाहते हैं कि यह क्या है, न कि यह क्या करता है: वास्तविक शब्द शब्द द्वारा परिभाषाओं को देखने के लिए है। यह सच है कि यह कुछ शब्दों को उनकी परिभाषाओं के लिए मानचित्रित करता है, लेकिन यह इरादे को भी कैप्चर नहीं करता है। – VoteCoffee

उत्तर

58
ProvincesByCountry 
+0

क्या कोई संदर्भ है जो कहता है कि ValueByKey सी # में शब्दकोश नामकरण के लिए मानक है? ऐसा लगता है कि शब्दकोश नामकरण के लिए कई समान अच्छे सम्मेलन हैं। क्या सी # समुदाय किसी भी कैनोलिक संदर्भ के बिना ValueByKey में बस गया (शायद माइक्रोसॉफ्ट के नेतृत्व के बाद)? –

+1

जहां तक ​​मुझे पता है, यह एक स्थापित सम्मेलन नहीं है। यह मामला हाथ के लिए एक अच्छा और संक्षिप्त समाधान की तरह लग रहा था। – Heinzi

+0

यह देखने के लिए अजीब बात है कि लो फ्रैंको के जवाब में 5 वोट हैं जहां आपके पास 2 9 हैं। ऐसा लगता है कि आप दोनों ने "अच्छे और संक्षिप्त" समाधान उठाए हैं, इसलिए मैंने माना कि आपको किसी भी तरह का अधिकार होना चाहिए था। मुझे लगता है कि आपके उत्तर को गति मिली है (या शायद इस तथ्य को बेहतर ढंग से संबोधित किया गया है कि "प्रांत" बहुवचन है)। –

14

मैं ज्यादातर इनमें से किसी एक का उपयोग करें:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping
+0

फ्रेंच की तरह शब्दकोश अंग्रेजी के लिए। –

2

प्रांतों, provinceMap, provinceDictionary

सभी दिमाग में आते हैं। मुझे प्रांत स्वयं मैप पसंद है। यदि यह सदस्य क्षेत्र है तो मैं "m_provinceMap" में "m_" उपसर्ग जोड़ूंगा।

+1

ठीक है। लेकिन यह चाबियाँ प्रतिबिंबित नहीं करता है। – Shuo

+0

मैं इसके साथ ठीक हूँ। यह इस मामले में काफी अंतर्निहित होना चाहिए। मैं छोटे नामों के लिए जाऊंगा, जब तक कोई कारण न हो कि चाबियाँ संदिग्ध हो सकती हैं। यदि आपके पास प्रांतों वाले कई मानचित्र थे, तो कुंजी को अलग करना महत्वपूर्ण होगा। आपके उदाहरण में, आप, कोई अस्पष्टता नहीं है। –

+1

हम्म ... मैं प्रांत मैप, प्रांत डिक्शनरी के साथ ठीक हूँ। लेकिन प्रान्त एक सूची का नाम प्रतीत होता है। – Shuo

7

मैं XtoYMap या YFromX पसंद है।

5

नामकरण हमेशा प्रासंगिक है। तो इस विशिष्ट मामले में राज्य मैपिंग के लिए देश को निर्दिष्ट करने वाला कुछ नाम उपयुक्त है।

अगर यह एक बड़ा संदर्भ में एक पाश और फिर खारिज कर दिया, मैं सामान्य रूप से बस एक छोटी अस्थायी प्रकार वर की तरह के साथ जाने के लिए सिर्फ एक उपकरण था ...

var dict = GetCountryStateMapping(); 
foreach(var item in dict) 
{ 
    //Something.... 
} 
+10

मुझे आईटी मजाक की याद दिलाता है ... "कंप्यूटर विज्ञान में केवल 2 कठोर समस्याएं हैं, चीजों का नामकरण, कैश अमान्यता और 1 त्रुटियों से बंद है।" –

+0

ठीक है। लेकिन अगर मैं चाहता हूं कि यह संपत्ति के रूप में इस्तेमाल किया जाए तो क्या होगा? – Shuo

+2

आह, फिर उस स्थिति में आपके पास एक संदर्भ और दायरा है, मूल वर्ग (सामग्री के साथ) और इसके जीवनकाल। उस मामले में नामकरण बहुत आसान है। जैसा कि मैंने कहा, नामकरण हमेशा प्रासंगिक है। उस स्थिति में, RegionByCountry या StateByCountry या प्रांत ByCountry आदि सबसे उपयुक्त आईएमओ होगा। –

3

ProvincesByCountry पर्याप्त स्पष्ट नहीं है, क्योंकि यह मैपिंग देशों की तरह लगता है कि एक से एक को साबित किया जा सके। प्रोविन्स बायकाउंट्री ["जर्मनी"] तक पहुंचने पर मुझे उम्मीद है कि ऑब्जेक्ट्स की सूची के बजाय एक मान ऑब्जेक्ट है।

मेरा व्यक्तिगत पैटर्न समान है:

[Plural of a noun describing the value]By[Singular of a noun describing the key] 

हालांकि, अगर एक संज्ञा मूल्य का वर्णन अपने स्वभाव से बहुवचन है, तो मैं पोस्टफ़िक्स सरणियों, या सूचियों उपयोग करते हैं, अंग्रेजी में आप कर सकते हैं के रूप में एक बहुवचन वास्तव में "बहुवचन" नहीं है। मैं व्यक्तिगत रूप से हमेशा IEnumerable या के वास्तविक क्रियान्वयन IEnumerable < टी> मैं उपयोग कर रहा हूँ की, सरणियों से चिपके परवाह किए बिना, हो कि सूची, या सरणी या जो कुछ भी।

ProvinceArraysByCountry 

बताता है कि यह वैज्ञानिक परिशुद्धता के साथ है:

आपके मामले में यह करने के लिए बदल जाता है।

यदि नियमों के रूप में शब्दकोश हैं तो मैं इस नियम को पुनरावर्ती रूप से लागू करता हूं। तब पहुंचने का क्रम नाम के शब्दों के क्रम में विपरीत होता है।कल्पना करें कि आप ग्रह जोड़ते हैं:

ProvinceArraysByCountryByPlanet["Earth"]["Germany"][0] = "Bavaria" 
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][1] = "Rhineland-Palatinate" 

और आखिर में आखिरी छोटी स्ट्रोक। यदि ऐसे शब्दकोश नक्शा गुण वस्तुएं और वस्तुओं को स्वयं करते हैं, तो मैं मुख्य खंड में ऑब्जेक्ट का वर्णन करने वाले शब्द को छोड़ देता हूं। यहां मेरा मतलब है:

NodesByIndex[node.Index] = node; // - Do 
NodesByNodeIndex[node.Index] = node; // - Don't 

मैं इस पैटर्न का बिना शर्त रूप से उपयोग करता हूं जो कि अच्छा है क्योंकि यह अनुमान लगाने के लिए बिल्कुल कोई जगह नहीं छोड़ता है। कॉन यह कभी-कभी काफी लंबे नाम उत्पन्न करता है। लेकिन मुझे नहीं पता कि हमेशा स्पष्ट कैसे होता है लेकिन हमेशा छोटे नाम होते हैं। आपको हमेशा समझौता करना पड़ता है। और यह निश्चित रूप से स्वाद का मामला है।

यह पैटर्न काम नहीं करता है (या कम से कम आप अपने मस्तिष्क को तोड़ देंगे) जब कुंजी भी शब्दकोश हों या जब आपके पास शब्दकोशों की सूचियों या कुछ अन्य पागल विदेशी सामानों की शब्दकोशों की सूची हो। लेकिन मुझे याद नहीं है कि घोंसले के कई स्तर हैं, इसलिए मैं इससे खुश हूं।

+0

कोड पूर्ण होने और विस्तृत मॉनीटर सार्थक चर नामों के लिए एक महान वरदान रहे हैं –

+0

जैसा कि मैंने माइक्रोसॉफ्ट के स्रोत कोड में देखा है, वे 'संग्रह' पोस्टफिक्स का उपयोग करते हैं। तो मैं कहूंगा 'प्रांत कोलेक्शंस बायकाउंट्री' या शायद एक और विशेष नाम: 'प्रांतकोलेक्शनबैकंट्रीनाम'। – Gabor

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