枚举是单数还是复数?


91

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

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

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

Weekday firstDayOfWeek = Weekday.Monday;

我在某处阅读了有关使用带枚举的单数正则枚举和复数形式的建议,但我想听听其他优点和缺点。


应该是枚举,而不是枚举。
里德·科普西

Answers:


90

这是直接来自微软的:

http://msdn.microsoft.com/zh-CN/library/4x252001(VS.71).aspx

大多数Enum类型使用单数名称,但对于位字段的Enum类型使用复数名称。


1
需要注意的是,位字段应该是复数的。
M. Dudley

2
这是MSDN枚举设计指南的最新版本:msdn.microsoft.com/en-us/library/ms229058.aspx
Rodney S. Foley

非常感谢我读过的一本书是《框架设计指南》。基本上,它是由15位以上的作者撰写的,这些年来,他们在.NET Framework的开发中都发挥了重要作用。本书为您提供了他们在开发框架API时的思维过程的见解,从而使您在浏览任何Microsoft框架,工具包等时处于边缘状态。在本书中可以找到很多(如果不是全部)文本docs网站,但打包起来非常好。
6

30

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

不要使用单一类型名称枚举,除非它的值是位域。

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

不要使用多种类型的名称与位域作为值枚举,也称为标志枚举。

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

13

在.NET Framework中,最“正常”的枚举(例如DayOfWeek)具有奇异的名称和标志枚举(例如StringSplitOptionsBindingFlags),有多种名称。这是有道理的,因为标记枚举的值可以表示多个项目,但是对于非标记枚举,它只能表示单个项目。


5

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


2

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

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

enum CoffeeSize { SMALL, MEDIUM, LARGE };

2

Microsoft建议枚举使用单数名称,除非它使用该Flags属性。并且从《框架设计指南》一书中摘录,您不应在枚举类型名称后加上Enum,Flags等,也不应在枚举值前加上缩写或首字母缩写,这在当今VB枚举中很常见。


但是实际上有原因吗?我们在接口前面加上“ I”。为什么不为枚举添加'E'前缀,并为标记提供'F'前缀。这将使它非常清晰。请注意,我不喜欢添加其他任何前缀,但是这些是特殊情况,例如接口,其类型永远不会改变。

0

只要您保持一致即可,它是主观的,与您使用什么无关紧要(我个人使用单数作为Sql约定的继承)


10
这很重要。约定促进可读性和可维护性。个人一致性不能与传统一致性相提并论。
手榴弹

1
如果每个图书馆都有自己的“主观”意见,则很难保持一致。
Paul Biggar 2009年

1
我猜想像微软所说的那样使用单数形式,我们都应该使用单数形式。不。只要您与单数形式(?)保持一致,就没关系。
Jaimal Chohan

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.