关于编码风格:枚举的单数或复数?

Singular or plural for enumerations?

复制这个网站码到您的网站上以设置一个投票箱在您的网站上。我认为这在宣言中是最有意义的。

1
2
3
4
5
6
7
8
9
10
enum Weekdays
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

……但我认为,当使用这一类型时,这使人变得更加奇怪。

ZZU1

我读到了一个建议,在某个地方使用单一的标准的标记和标记,但我想听听更多的专业人士和科学家的意见。


这里是微软的:

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

Use a singular name for most Enum
types, but use a plural name for Enum
types that are bit fields.


一项建议来自.NET框架设计指南,第59-60页:

Do use a singular type name for an enumeration, unless its values are bit
fields.

1
2
3
4
5
public enum ConsoleColor {
  Black,
  Blue,
  Cyan,
  ...

Do use a plural type name for an enumeration with bit fields as values, also called a flags enum.

1
2
3
4
5
6
[Flags]
public enum ConsoleModifiers {
  Alt,
  Control,
  Shift
}


在.NET框架中,大多数"普通"枚举(例如DayOfWeek具有单数名称,标志枚举(例如StringSplitOptionsBindingFlags具有复数名称。这是有意义的,因为标志枚举的值可以表示多个项,但对于非标志枚举,它只能表示单个项。


In general, I consider an enum definition to be a type definition, with the values of the
enum being the different values the type can have; therefore it gets a singular name:
enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };
enum CoffeeSize { SMALL, MEDIUM, LARGE };

对。如果您有将枚举作为类实现的心理体验,那么对于类型使用单一名称的事实应该表明对这样的枚举使用单数名称是有意义的。例如。,

1
2
3
4
5
struct Weekday {};

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

1
2
3
4
5
void func (Weekday *day)
{
   if (day == &SUNDAY)
       ...
}

因为谁更喜欢用Enums表示复数,你会把它命名为struct Weekdays吗?


除非使用Flags属性,否则Microsoft建议对枚举使用单数名称。从框架设计指南手册中可以看出,不应在枚举类型名称后面加上枚举、标志等后缀,也不应在枚举值前面加上缩写或首字母缩略词,就像以前在VB枚举中常见的那样。


通常,我认为枚举定义是一个类型定义,枚举的值是类型可以具有的不同值;因此它得到一个单数名称:

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

enum CoffeeSize { SMALL, MEDIUM, LARGE };


类似于C /微软约定,Java中的枚举应该是单数的:HTTP://DOCS.Oracle .COM/JavaSe/TutoRale/Java/JavaOO/Enth.HTML


它是主观的,无论您使用什么,只要您是一致的(我个人使用单数作为我的SQL约定的一个延续)