Liczby pojedynczej czy mnogiej?

Czy używasz liczby pojedynczej lub mnogiej do wyliczeń? Myślę, że to ma sens z liczbą mnogą w deklaracji

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

... ale myślę, że ma to większy sens w liczbie pojedynczej, gdy używa się typu, np.

Weekday firstDayOfWeek = Weekday.Monday;

Czytałem gdzieś zalecenie, aby używać liczby pojedynczej z regularnymi enumami i liczby mnogiej z flagami, ale chciałbym usłyszeć więcej za i przeciw.

Author: Jan Aagaard, 2009-08-26

8 answers

Tutaj jest prosto od Microsoftu:

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

Użyj pojedynczej nazwy dla większości Enum typy, ale używaj nazwy liczby mnogiej dla Enum typy, które są polami bitowymi.

 66
Author: Matt Ruwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:32:52

Jedno zalecenie pochodzi z. NET Framework Design Guidelines , strona 59-60:

Do użyj pojedynczej nazwy typu do wyliczenia, chyba że jego wartości są bitowe pola.

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

Do użyj nazwy typu w liczbie mnogiej do wyliczenia z polami bitowymi jako wartościami, nazywanymi również flags enum.

[Flags]
public enum ConsoleModifiers {
  Alt,
  Control,
  Shift
}
 20
Author: Michael Petrotta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:30:45

W. NET Framework większość" normalnych " enum (np. DayOfWeek) mA nazwy pojedyncze i znaczniki enum (np. StringSplitOptions, BindingFlags) mają imiona w liczbie mnogiej. Ma to sens, ponieważ wartość enum znacznika może reprezentować wiele elementów, ale dla enum znacznika nie może reprezentować tylko jednego elementu.

 11
Author: Mehrdad Afshari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:28:43

Microsoft zaleca używanie pojedynczej nazwy do wyliczeń, chyba że używa atrybutu Flags. Jak wynika z podręcznika Framework Design Guidelines, nie należy dodawać nazw typów enumeracji z Enum, Flags, itp. i nie powinieneś dodawać wartości wyliczania za pomocą skrótu lub akronimu, jak to było powszechne w przypadku wyliczeń VB w tamtych czasach.

 2
Author: Brian Gideon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:35:07

Ogólnie uważam definicję enum za definicję typu, z wartościami enum jest różnymi wartościami, które może mieć typ; dlatego otrzymuje pojedynczą nazwę: enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

Tak. Jeśli robisz mentalne doświadczenie implementacji enum jako klas, to fakt, że użyłbyś pojedynczej nazwy dla rodzaju powinien ujawnić, że to sensowne jest używanie nazw pojedynczych dla takich enum . Np.,
struct Weekday {};

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

...

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

Kto woli liczby mnogie w enumach, możesz to nazwać struct Weekdays?

 2
Author: Pedro Alves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-16 10:57:50

Ogólnie uważam, że definicja enum jest definicją typu, A wartości enum są różnymi wartościami, jakie może mieć typ; dlatego otrzymuje on pojedynczą nazwę:

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

enum CoffeeSize { SMALL, MEDIUM, LARGE };
 1
Author: Avi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:32:21

Podobnie jak Konwencja C#/Microsoft, enums w Javie powinien być pojedynczy: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

 0
Author: tanguy_k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-17 22:15:19

To subiektywne i nie ma znaczenia, czego używasz, o ile jesteś spójny (osobiście używam liczby pojedynczej jako przeniesienia z moich konwencji Sql)

 -1
Author: Jaimal Chohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 16:31:17