C#中常量类的命名约定:复数还是单数?

dev*_*xer 20 c# coding-style naming-conventions

这些指南对于列举很清楚......

对枚举使用单数名称,除非其值为位字段.

(来源:http://msdn.microsoft.com/en-us/library/ms229040.aspx)

...但对于一类常量(或只读静态字段/属性)则不那么清楚.例如,这个类的名称应该是单数还是复数?

public static class Token // or Tokens?
{
    public const string Foo = "Foo";
    public const string Bar = "Bar";
    public const string Doo = "Doo";
    public const string Hicky = "Hicky";
}
Run Code Online (Sandbox Code Playgroud)

pho*_*oog 26

我会用复数:Tokens.这意味着静态类充当某种类的项的集合(其运行时类型不是类的类).

另一方面,枚举的字段是枚举类型的实例.例如,TypeCode.String 一个TypeCode.说这TypeCodes.String是一个很奇怪TypeCodes.

但是,在您的Tokens示例中,使用单数给出了我们Token.Foo,这一个标记,但它不是Token(它是一个string).

(或者,如果你使用复数类名,Tokens.Foo则是a string,而不是Tokens.Ack!)

  • +1。我喜欢对这种情况采取同样的常识性方法。在命名任何东西时,我确保它在对话中是可发音和可用的,因为很有可能在某个时候,它可能需要传达给另一个开发人员。虽然在我们如何命名事物方面存在“标准”,但总有特殊情况可能会导致偏离规范。 (2认同)

kpr*_*bst 6

由于两者的使用方式基本相同,并且在概念上是相同的,我建议只遵循枚举指南.

  • +1 表示单数名称。恕我直言,在编写静态类(这是一个带有 Tokens Foo、Bar 等的容器)时,复数是有意义的,而在使用静态类(用 Token Foo 做某事)时,单数是有意义的。因为第二种情况(使用令牌)应该远远超过第一种情况(定义令牌),所以单数更合适。 (2认同)