c# 普遍接受的命名约定是什么?(函数、类、参数、局部变量、命名空间等)
6 回答
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_”或“_”作为实例变量的前缀。
Resharper 的指南建议
- 类型和命名空间UpperCamelCase
- 接口IUpperCamelCase
- 类型参数TUpperCamelCase
- 方法属性和事件UpperCamelCase
- 局部变量lowerCamelCase
- 局部常量lowerCamelCase
- 参数lowerCamelCase
- 字段(非私有)UpperCamelCase
- 实例字段(私有)_lowerCamelCase
- 静态字段(私有)_lowerCamelCase
- 常量字段(非私有)UpperCamelCase
- 常量字段(私有)UpperCamelCase
- 静态只读字段(非私有)UpperCamelCase
- 静态只读字段(私有)UpperCamelCase
- 枚举成员UpperCamelCase
- 所有其他实体UpperCamelCase
Microsoft 的 .NET 标准将Pascal Case用于命名空间、公共和受保护成员(基本上对其他类可见的任何内容)。对于私有成员和局部变量,有更广阔的空间可以做任何你和你的团队最舒服的事情。
不要低估尽可能遵循您正在使用的平台的命名约定的价值。
查看 .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 约定的内置规则,这是您应该使用它们的另一个原因!
Juval Lowy 在Programming .NET Components中对此进行了尝试,也请参阅此SO 链接。
我想看看Baldwin、Gray 和 Misfeldt的名为“ Elements of C# Style ”的薄书。这本蓝皮书涵盖了命名约定以及创建一致、干净、可读代码的许多其他方面。