32

c# 普遍接受的命名约定是什么?(函数、类、参数、局部变量、命名空间等)

4

6 回答 6

69

Microsoft 有一套优秀的类库设计指南,包括关于命名的部分。简而言之(括号中的示例):

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

私人名称由您决定,但我倾向于遵循与其他所有内容相同的约定。不鼓励使用匈牙利符号(Win32 风格),尽管许多地方使用“m_”或“_”作为实例变量的前缀。

于 2009-10-24T15:45:17.750 回答
5

Resharper 的指南建议


  • 类型和命名空间UpperCamelCase
  • 接口IUpperCamelCase
  • 类型参数TUpperCamelCase
  • 方法属性和事件UpperCamelCase
  • 局部变量lowerCamelCase
  • 局部常量lowerCamelCase
  • 参数lowerCamelCase
  • 字段(非私有)UpperCamelCase
  • 实例字段(私有)_lowerCamelCase
  • 静态字段(私有)_lowerCamelCase
  • 常量字段(非私有)UpperCamelCase
  • 常量字段(私有)UpperCamelCase
  • 静态只读字段(非私有)UpperCamelCase
  • 静态只读字段(私有)UpperCamelCase
  • 枚举成员UpperCamelCase
  • 所有其他实体UpperCamelCase
于 2014-07-18T07:37:00.810 回答
4

Microsoft 的 .NET 标准将Pascal Case用于命名空间、公共和受保护成员(基本上对其他类可见的任何内容)。对于私有成员和局部变量,有更广阔的空间可以做任何你和你的团队最舒服的事情。

于 2009-10-24T15:45:07.407 回答
2

不要低估尽可能遵循您正在使用的平台的命名约定的价值。

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

Jon Skeet 为您提供了 Microsoft 一篇优秀文章的链接:http: //msdn.microsoft.com/en-us/library/ms229042.aspx

您还可以使用独立的 Microsoft FxCop(或代码分析,如果您有团队版)http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en来检查已遵循命名约定。它具有 Microsoft 约定的内置规则,这是您应该使用它们的另一个原因!

于 2009-10-24T15:52:06.957 回答
1

Juval Lowy 在Programming .NET Components中对此进行了尝试,也请参阅此SO 链接

于 2009-10-24T15:46:33.203 回答
1

我想看看Baldwin、Gray 和 Misfeldt的名为“ Elements of C# Style ”的薄书。这本蓝皮书涵盖了命名约定以及创建一致、干净、可读代码的许多其他方面。

于 2009-10-24T15:58:48.487 回答