命名约定在C#中

什么是普遍接受的命名约定为C#? (函数,类,参数,局部variables,命名空间等)

微软在类库devise方面有一套非常出色的指导方针 ,其中包括关于命名的部分 。 总之(括号里的例子):

  • 类/结构:PascalCase( WebRequest
  • 接口:带I前缀的PascalCase( IDisposable
  • 方法:PascalCase( ToUpper
  • 属性:PascalCase( Length
  • 事件:PascalCase( Click
  • 命名空间:PascalCase( System.Collections ;尽pipe在一个部分中有两个单词不常见)
  • 非常量variables,包括参数:camelCased( keySelector
  • 常量:PascalCase( Int32.MaxValue
  • 枚举:PascalCase,单数非标志和复数标志( HttpStatusCodeBindingFlags
  • 属性:具有“属性”后缀的PascalCase( ThreadStaticAttribute

私人名字取决于你,但我倾向于遵循与其他一切相同的约定。 虽然很多地方使用“m_”或“_”作为实例variables的前缀,但是不鼓励使用匈牙利符号(以Win32的forms)。

微软的.NET标准是使用Pascal Case来命名空间,公共和受保护成员(基本上其他类可见)。 对于私人会员和地方变数,只要做你和你的团队最舒服的事情,就有更广阔的位置。

Resharper的指导方针build议


  • types和名称空间UpperCamelCase
  • 接口IUpperCamelCasetypes参数TUpperCamelCase
  • 方法属性和事件UpperCamelCase Local
  • variableslowerCamelCase局部常量lowerCamelCase
  • 参数lowerCamelCase字段(非私有) UpperCamelCase
  • 实例字段(私有) _lowerCamelCase
  • 静态字段(私有) _lowerCamelCase
  • 常量字段(不是私有的) UpperCamelCase
  • 常量字段(私有) UpperCamelCase
  • 静态只读字段(不是私有的) UpperCamelCase
  • 静态只读字段(私有) UpperCamelCase
  • 枚举成员UpperCamelCase
  • 所有其他实体UpperCamelCase

不要低估遵守你正在工作的平台的命名约定的价值。

查看.NET Framework的参考资料,获取如何“适应”( http://msdn.microsoft.com/zh-cn/library/ms229335.aspx )的示例。

Jon Skeet给了你一个由微软撰写的优秀文章的链接: http : //msdn.microsoft.com/en-us/library/ms229042.aspx

您也可以使用独立的Microsoft FxCop(或者Code Analysis,如果您拥有Team Edition的话) http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en以检查遵守命名惯例。; 它有微软惯例的内置规则,这是你应该使用它的另一个原因!

Juval Lowy捅了一下这个在Programming .NET Components中 ,也看到了这个链接 。

我可以看看鲍德温,格雷,米菲尔特这本名为“ C#风格的元素 ”的瘦身书。 蓝皮书涵盖了命名约定,以及创build一致,干净,可读代码的许多其他方面。