枚举是单数还是复数?

列举时使用单数还是复数? 我认为在声明中使用复数最有意义

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

但是我认为单数使用类型更有意义,例如。

Weekday firstDayOfWeek = Weekday.Monday;

我在某处读到一个建议,使用单数与正则枚举和复数与标志,但我想听到一些更多的利弊。

35202 次浏览

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

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

使用单数类型名称作为枚举,除非它的值是位 田野。

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

是否 对枚举使用复数类型名称,并将位字段作为值,也称为标志枚举。

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

它是主观的,不管您使用什么,只要您是一致的(个人而言,我使用单数作为从我的 Sql 约定继承来的)

一般来说,我认为枚举定义是一个类型定义,枚举的值是该类型可以拥有的不同值; 因此它得到一个单数名称:

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


enum CoffeeSize { SMALL, MEDIUM, LARGE };

这是微软直接提供的信息:

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

对大多数 Enum 使用单数名称 类型,但对 Enum 使用复数名称 types that are bit fields.

Microsoft建议使用单数名称进行枚举,除非它使用 Flags属性。正如框架设计指南一书中所说,你不应该在枚举类型名称后面加上 Enum、 Flags 等等,也不应该在枚举值前面加上缩写或首字母缩写,这在当时的 VB 枚举中是很常见的。

一般来说,我认为枚举定义是一个类型定义,具有 Enum 是该类型可以具有的不同值; 因此它得到一个单数名称: 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吗?