枚举的单数还是复数?

你使用单数还是复数进行枚举? 我认为在宣言中用复数forms最好

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

…但是我认为在使用这个types时单数更有意义,例如

 Weekday firstDayOfWeek = Weekday.Monday; 

我读了一个build议,使用单数的定期枚举和复数forms的标志,但我想听听更多的优点和缺点。

这里直接来自微软:

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

对大多数枚举types使用单数名称,但对位域为Enumtypes使用复数名称。

一个build议来自.NET Frameworkdevise指南 ,第59-60页:

除非它的值是位域,否则使用单数types的名称作为枚举。

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

使用复数types名称作为值,也称为标志枚举枚举。

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

在.NET Framework中,大多数“普通”枚举(例如DayOfWeek )具有单数名称和标志枚举(例如StringSplitOptionsBindingFlags )具有复数名称。 这是有道理的,因为标志枚举的值可以表示多个项目,但是对于非标志枚举,它只能表示一个项目。

Microsoft build议使用单数名称进行枚举,除非它使用Flags属性。 而从框架devise指南书中,不应该使用Enum,Flags等后缀枚举types名称,而且不应该在枚举值前加上一个缩写或首字母缩写词,就像在当天VB枚举中常见的那样。

一般来说,我认为枚举定义是一个types定义,枚举值是types可以具有的不同值; 因此得到一个单独的名称: enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

是。 如果你将这些枚举实现为类的心理体验,那么你将使用单数名称作为types的事实应该揭示,为这样的枚举使用单数名称是有意义的。 例如,

 struct Weekday {}; const Weekday SUNDAY; const Weekday MONDAY; const Weekday TUESDAY; 

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

谁喜欢在枚举中的复数,你会命名struct Weekdays几?

一般来说,我认为枚举定义是一个types定义,枚举值是types可以具有的不同值; 因此它得到一个独特的名字:

 enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE }; 

像C#/微软惯例一样,Java中的枚举应该是单数: http : //docs.oracle.com/javase/tutorial/java/javaOO/enum.html

这是主观的,不要紧,你用什么,只要你是一致的(我个人使用单数作为它从我的Sql约定inheritance)