अगर ऐसा है तो मुझे कुछ प्रकार का बिंदु याद आ सकता है - कृपया मेरे प्रश्न के एक हिस्से के रूप में उस चर्चा को शामिल करें :)।कार्यक्षमता के लिए विधियों के साथ Enum (संयोजन कक्षा/एनम)
यह एक संक्षिप्त कोड है और एक कार्य कोड का नमूना नाम दिया गया है। GetTicks (..) एक नमूना है, जो कि किसी भी तरह की कार्यक्षमता हो सकता है (> 0 < 9
का मान एक विशिष्ट Enum a.so वापस करना चाहिए)।
public static class Something
{
public enum TypeOf : short
{
Minute = 2, Hour = 3, Day = 4, ........
}
public static long GetTicks(Something.TypeOf someEnum)
{
long ticks = 0;
switch (someEnum)
{
case Something.TypeOf.Minute:
ticks = TimeSpan.TicksPerMinute;
break;
case Something.TypeOf.Hour:
ticks = TimeSpan.TicksPerHour;
break;
....
}
return ticks;
}
}
// This class is called from anywhere in the system.
public static void SomeMethod(string dodo, object o, Something.TypeOf period)
{
// With the design above
long ticks = Something.GetTicks(period);
// Traditional, if there was a simple enum
if (period == Something.Day)
ticks = TimeSpan.FromDays(1).Ticks;
else if (period == Something.Hour)
ticks = TimeSpan.FromHours(1).Ticks;
}
विचार यह है कि एनम से संबंधित जितनी संभव हो सके, एक enum से संबंधित कार्यक्षमता एकत्र करना है। Enum कारण समारोह है। इसके अलावा मुझे enum के पास ऐसी कार्यक्षमता को देखने के लिए यह आसान और स्वाभाविक लगता है। इसके अलावा संशोधित या विस्तार करना आसान है।
मेरे पास जो कमी है, वह है कि मुझे enum को अधिक स्पष्ट Something.TypeOf
बताएं। डिजाइन नो-स्टैंडर्ड देख सकता है? और लागू होगा यदि enum कक्षा में आंतरिक उपयोग के लिए था।
आप यह और कैसे अच्छा करेंगे? मैंने अमूर्त, आधार विरासत, आंशिक कोशिश की। उनमें से कोई भी लागू नहीं लगता है।
पूरी तरह से, वास्तव में समान रूप से! मुझे आपका दृष्टिकोण पसंद है और बाद में इसमें खोद जाएगा जब मैं अनुकूलित करने और इसके लाभों को समझने के लिए समय (यदि कुछ) समझ सकता हूं;))। – Independent
हाँ, जावा जैसी enums। हालांकि मैं एक संरचना का उपयोग करने की सिफारिश करता हूं, कक्षा नहीं। और तेजी से तुलना और स्विच स्टेटमेंट के लिए _Value_ फ़ील्ड। – IllidanS4
@ IllidanS4: मुझे कोई संरचना का उपयोग करने के लिए कोई विशेष नहीं दिखता है - और एक वर्ग अलग-अलग उप-वर्गों (जैसे जावा एनम्स) को लागू करने के लिए विभिन्न उप-वर्गों की अनुमति देता है। इसके अतिरिक्त, एक संरचना का अर्थ होगा 'डिफ़ॉल्ट (फू)' हमेशा एक "असली" मान था, जो गर्दन में दर्द हो सकता है। हालांकि मुझे यकीन है कि ऐसे मामले हैं जहां एक संरचना संस्करण उपयुक्त होगा, मैं अक्सर कक्षाओं का उपयोग करता हूं। –