你用单数还是复数的枚举? 我想有最好的意义与在声明复数
enum Weekdays
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
...但我认为它使用的类型时,如使用奇异更有意义
Weekday firstDayOfWeek = Weekday.Monday;
我读了某处推荐使用单数蒙山经常枚举和旗子复数,但我想听到更多的优点和缺点。
这是直接从微软:
http://msdn.microsoft.com/en-us/library/4x252001(VS.71).aspx
对于大多数枚举类型使用单数名称,但对于枚举类型是位域使用复数名称。
一个建议来自于.NET Framework设计准则 ,59-60页:
不要使用单一类型名称枚举,除非它的值是位域。
public enum ConsoleColor { Black, Blue, Cyan, ...
不要使用多种类型的名称与位域作为值枚举,也称为标志枚举。
[Flags] public enum ConsoleModifiers { Alt, Control, Shift }
在.NET Framework中,最“正常”的枚举(例如DayOfWeek
)具有奇异的名称和标志枚举(如StringSplitOptions
, BindingFlags
)复数形式的名称。 这是有道理的,因为一个标志枚举值可以代表多个项目,但对于一个非标志的枚举,它只能代表一个项目。
一般情况下,我认为一个枚举定义是一种类型的定义,与枚举为不同值的类型可以具有的值; 因此它得到单数名称: 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
?
微软建议的枚举,除非它使用了用单数名Flags
属性。 而从框架设计指南书采取你不应该用后缀枚举,旗帜等枚举类型名称和与VB枚举早在一天是共同的,你不应该用缩写或缩写词的前缀枚举值。
一般情况下,我认为一个枚举定义是一种类型的定义,与枚举为不同值的类型可以具有的值; 因此,它得到一个奇异的名字:
enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };
enum CoffeeSize { SMALL, MEDIUM, LARGE };
这是主观的,不要紧,你用什么,只要你是一致的(我个人使用单数的距离我的SQL约定结转)
如C#/微软惯例,在Java枚举应该是单数: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html