2009-08-26 15 views
54

क्या आप गणनाओं के लिए एकवचन या बहुवचन का उपयोग करते हैं? मुझे लगता है कि यह घोषणागणना के लिए एकवचन या बहुवचन?

enum Weekdays 
{ 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday, 
    Sunday 
} 

में बहुवचन के साथ सबसे अच्छा समझ में आता है ... लेकिन मुझे लगता है कि यह विलक्षण के साथ और अधिक समझ में आता है जब प्रकार, उदा का उपयोग कर

Weekday firstDayOfWeek = Weekday.Monday; 

मैंने कहीं एक सिफारिश को पढ़ने के लिए नियमित रूप से enums और झंडे के साथ बहुवचन whith विलक्षण उपयोग करने के लिए है, लेकिन मैं कुछ और पक्ष-विपक्ष सुनना पसंद करेंगे।

+0

enumerations, नहीं प्रगणक होना चाहिए। –

+1

संबंधित: http://stackoverflow.com/questions/338156/table-naming-dilemma-singular-vs-plural- नाम – harpo

उत्तर

58

यहाँ यह Microsoft से सीधे है:

http://msdn.microsoft.com/en-us/library/4x252001(VS.71).aspx

सबसे Enum प्रकार के लिए एक विलक्षण नाम का प्रयोग करें, लेकिन Enum के लिए एक बहुवचन नाम का उपयोग इसलिए यह एक विलक्षण नाम हो जाता है प्रकार जो छोटे फ़ील्ड हैं।

+1

ध्यान दें कि बिट फ़ील्ड को बहुवचन किया जाना चाहिए। –

+2

गणना डिजाइन के लिए एमएसडीएन दिशानिर्देशों का नवीनतम संस्करण यहां दिया गया है: http://msdn.microsoft.com/en-us/library/ms229058.aspx –

10

.नेट फ्रेमवर्क में, सबसे "सामान्य" enums (जैसे DayOfWeek) विलक्षण नाम और झंडा enums (जैसे StringSplitOptions, BindingFlags) बहुवचन नाम है है। यह समझ में आता है, क्योंकि ध्वज enum का एक मूल्य कई वस्तुओं का प्रतिनिधित्व कर सकता है लेकिन गैर-ध्वज enum के लिए, यह केवल एक आइटम का प्रतिनिधित्व कर सकते हैं।

18

एक सिफारिश नेट Framework Design Guidelines, पेज 59-60 से आता है:

एक गणन के लिए उपयोग एक विलक्षण प्रकार का नाम क्या है, जब तक अपने मूल्यों बिट क्षेत्र हैं।

public enum ConsoleColor { 
    Black, 
    Blue, 
    Cyan, 
    ... 

मूल्यों के रूप में बिट क्षेत्रों के साथ एक गणना के लिए उपयोग एक बहुवचन प्रकार का नाम क्या है, यह भी एक झंडे enum कहा जाता है।

[Flags] 
public enum ConsoleModifiers { 
    Alt, 
    Control, 
    Shift 
} 
-1

यह व्यक्तिपरक है और कोई फर्क नहीं पड़ता कि तुम क्या प्रयोग करते हैं, जब तक कि आप लगातार कर रहे हैं (व्यक्तिगत रूप से मैं विलक्षण का उपयोग के रूप में अपनी एक मेरी Sql सम्मेलनों से आगे ले जाना)

+8

इससे कोई फर्क नहीं पड़ता। सम्मेलन पठनीयता और रखरखाव को बढ़ावा देते हैं। व्यक्तिगत स्थिरता परंपरागत स्थिरता की तुलना नहीं करता है। – grenade

+1

प्रत्येक लाइब्रेरी की अपनी "व्यक्तिपरक" राय होने पर लगातार सुसंगत होना चाहिए। –

+1

मुझे लगता है कि माइक्रोसॉफ्ट का कहना है कि एकवचन का उपयोग करते हैं, हमें सभी को एकवचन का उपयोग करना चाहिए। नहीं। जब तक आप अपने plualization और एकवचन (?) के अनुरूप हैं, यह वास्तव में कोई फर्क नहीं पड़ता। –

1

सामान्य तौर पर, मैं एक enum परिभाषा को एक प्रकार की परिभाषा माना जाता है, जिसमें enum के मान अलग-अलग मान होते हैं;

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; 

enum CoffeeSize { SMALL, MEDIUM, LARGE }; 
2

माइक्रोसॉफ्ट recommends enumerations के लिए एक विलक्षण नाम का उपयोग कर जब तक यह Flags विशेषता का उपयोग करता। और जैसा कि फ्रेमवर्क डिज़ाइन दिशानिर्देश पुस्तक से लिया गया है, आपको एनम, ध्वज इत्यादि के साथ गणित प्रकार के नामों को प्रत्ययित नहीं करना चाहिए और आपको संक्षेप में संक्षिप्त नामों को उपनाम या संक्षिप्त नाम से उपसर्ग नहीं करना चाहिए जैसा कि दिन में वीबी गणनाओं के साथ आम था।

+0

लेकिन क्या वास्तव में एक कारण है? हम 'मैं' के साथ इंटरफेस उपसर्ग करते हैं। क्यों 'ई' के साथ prefix enums और 'एफ' के साथ झंडे। इससे क्रिस्टल स्पष्ट हो जाएगा। ध्यान दें कि मुझे कुछ और उपसर्ग पसंद नहीं है, लेकिन ये इंटरफेस जैसे विशेष मामले हैं जहां प्रकार कभी नहीं बदलेगा। –

2

सामान्य तौर पर, मैं enum विभिन्न मूल्यों प्रकार हो सकता है किया जा रहा है के मूल्यों के साथ, एक प्रकार परिभाषा होने के लिए एक enum परिभाषा पर विचार करें; enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

हाँ: इसलिए यह एक विलक्षण नाम हो जाता है।यदि आप कक्षाओं के रूप में enums को लागू करने का मानसिक अनुभव करते हैं, तो इस तथ्य के लिए कि आप इस प्रकार के एकवचन नाम का उपयोग करेंगे, यह प्रकट करना चाहिए कि ऐसे enums के लिए एकवचन नामों का उपयोग करने के लिए समझ में आता है। जैसे,

struct Weekday {}; 

const Weekday SUNDAY; 
const Weekday MONDAY; 
const Weekday TUESDAY; 

...

void func (Weekday *day) 
{ 
    if (day == &SUNDAY) 
     ... 
} 

जो enums में बहुवचन पसंद के लिए, आपको लगता है कि struct Weekdays नाम हैं?

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