एक ऐसी कक्षा का उपयोग करते समय जिसमें एनम संपत्ति है, आमतौर पर संपत्ति के नाम और enum प्रकार के बीच एक नामकरण संघर्ष मिलता है। उदाहरण:एनम और संपत्ति नामकरण संघर्ष
enum Day{ Monday, Tuesday, ... }
class MyDateClass
{
private Day day;
public Day Day{ get{ return day; } }
}
के बाद से ही झंडे enums बहुवचन नाम, नामकरण enum "दिन" होना चाहिए एक गैर झंडा enum के लिए जाने का रास्ता नहीं है। उपर्युक्त उदाहरण में आप enum या संपत्ति के लिए "सप्ताहांत" जैसी कुछ भिन्नता का उपयोग कर सकते हैं। लेकिन सामान्य मामले में इस तरह की कोई अच्छी भिन्नता नहीं है, इसलिए आप फू और बार प्रकार के enum गुणों वाले किसी ऑब्जेक्ट के लिए "FooMode" या "BarKind" जैसी गुणों का उपयोग कर समाप्त कर देते हैं। इतना सुरुचिपूर्ण नहीं है।
आप आमतौर पर इस परिदृश्य में enums और गुणों का नाम कैसे देते हैं?
त्वरित प्रतिक्रियाओं के लिए धन्यवाद। एक और सवाल: सार्वजनिक enums घोंसला करने की सिफारिश क्यों नहीं है, और यदि आप सार्वजनिक enams घोंसला करना चाहते हैं तो आप नामकरण मुद्दों को कैसे हल करते हैं?
class Vehicle
{
enum Kind{ Car, Bike }
public Kind Kind{ get{ return ... } }
}
class Meal
{
enum Kind{ Dessert, MainCourse }
public Kind Kind{ get{ return ... } }
}
ऊपर परिदृश्य में, यह देखते हुए कि भोजन और वाहन शेयर एक ही नाम स्थान, मैं स्थानांतरित नहीं कर सकते "प्रकार" वर्गों में से या तो बाहर क्रमशः यह MealKind का नाम बदलने और VehicleKind बिना। मुझे
myVehicle.Kind = Vehicle.Kind.Car
जैसा दिखता है लेकिन यह गाइडलाइन की सिफारिश नहीं है। यहां सबसे अच्छा अभ्यास क्या होगा? नेस्टेड सार्वजनिक enums का उपयोग कभी नहीं करें और इसके बजाय उन्हें VehicleKind आदि नाम दें?
यह एक नेस्टेड परिदृश्य में काम नहीं करेगा। फिर स्पष्ट रूप से एक नाम संघर्ष है। मैं इस मामले में 'उपयोग' उपनाम का उपयोग करने का भी विचार नहीं करता हूं। – leppie
नेस्टेड enums कोड को लंबे समय तक बनाते हैं और कक्षा से बारीकी से बंधे हैं। ओह, और आपके उदाहरण में, आप कार और बाइक को वाहन और मिठाई और मेनकर्स से भोजन से प्राप्त करना चाहते हैं, इसलिए एनम के लिए कोई ज़रूरत नहीं है :) – OregonGhost
मान लीजिए कि आपको enum की आवश्यकता है (यानी इस प्रकार को एक मान के रूप में उपयोग किया जाना चाहिए, न कि एक उप-वर्ग), क्या वाहन के नाम जैसे वाहन नाम से पहले बहुत सारे enums prefixed होने के बजाय सार्वजनिक घोंसला वाले enums के लिए यह अच्छा नहीं है? उदाहरण के लिए, कक्षा का नाम बदलने पर, केवल उस वर्ग से संबंधित सभी enums का नाम बदला जाना चाहिए ... – AndersF