गणना के लिए एकवचन या बहुवचन?


91

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

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

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

Weekday firstDayOfWeek = Weekday.Monday;

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


एनुमरेटर होना चाहिए, एन्यूमरेटर नहीं।
रीड कोपसे

1

जवाबों:


90

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

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

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


1
इस नोट के साथ कि बिट फ़ील्ड को बहुलित किया जाना चाहिए।
एम। डुडले

2
यहाँ Enumeration Design के लिए MSDN दिशानिर्देशों का नवीनतम संस्करण है: msdn.microsoft.com/en-us/library/ms229058.aspx
Rodney S. Foley

एक पुस्तक मैं बहुत आभारी हूं कि मैंने पढ़ा है कि फ्रेमवर्क डिज़ाइन दिशानिर्देश हैं । मूल रूप से यह 15+ लेखकों द्वारा लिखा गया है, जिन्होंने सभी वर्षों में .NET फ्रेमवर्क के विकास में बड़ी भूमिका निभाई। पुस्तक आपको उनके विचार प्रक्रिया में एक अंतर्दृष्टि प्रदान करती है जब वे फ्रेमवर्क एपीआई विकसित करते हैं, और ऐसा करने पर आपको किसी भी Microsoft फ्रेमवर्क, टूलकिट आदि को नेविगेट करने की बात आती है, तो कई ऐसे होते हैं जो पाठ के सभी नहीं मिल सकते हैं। डॉक्स वेबसाइट, लेकिन यह इसे बहुत अच्छी तरह से पैकेज करता है।
22:15

30

एक सिफारिश .NET फ्रेमवर्क डिज़ाइन दिशानिर्देशों से आती है , पृष्ठ 59-60:

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

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

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

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

13

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


5

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

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

struct Weekday {};

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

...

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

जो लोग एनम में प्लूर पसंद करते हैं, क्या आप उसका नाम लेंगे struct Weekdays ?


2

सामान्य तौर पर, मैं एक एनुम परिभाषा को एक प्रकार की परिभाषा मानता हूं, एनम के मूल्यों के साथ विभिन्न मान हो सकते हैं जो टाइप हो सकते हैं; इसलिए इसे एक विलक्षण नाम मिलता है:

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

enum CoffeeSize { SMALL, MEDIUM, LARGE };

2

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


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

0

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


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

1
यदि प्रत्येक पुस्तकालय की अपनी "व्यक्तिपरक" राय है, तो लगातार होना मुश्किल है।
पॉल बिगगर

1
मुझे लगता है कि Microsoft कहता है कि एकवचन का उपयोग करें, हमें सभी को एकवचन का उपयोग करना चाहिए। नहीं। जब तक आप अपने बहुवचन और एकवचन (?) के अनुरूप हैं, यह वास्तव में मायने नहीं रखता।
जयमल चैहान

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.