第2章 命名规范
ü?用PascalCasing命名多个单词构成的命名空间、类型以及成员的名字。
例如:使用TextColor而不使用Textcolor,单个单词(Button)的首字母大写,当一个单词为复合词(endpoint)作为一个单词,只有第一字母大写。
?
ü?用camelCasing命名参数的名字。
?
ü?不同类型标识符的大小写规则,如下表:
?
标识符
命名法
例子
命名空间
Pascal
nameSpace?System.Scurity{...}
类型
Pascal
public class?StreamReader{...}
接口
Pascal
public interface?IEnumerable{...}
方法
Pascal
public class Object{
public virtual string?Tostring();}
属性
Pascal
public class String{
public int?Length?{get;}}
事件
Pascal
public class Process{
public event EventHandler?Exited;}
字段(静态)
Pascal
public class MessageQueue{
public static readonly TimeSpan?InfiniteTimeout;}
枚举值
Pascal
FileMode{Append,...}
参数
Camel
public class Convert{
public static int ToInt32 (string?value);}
ü?要把缩写词首字母为两个字母全部大写,当是camelCasing风格的参数名的作为第一单词来使用。
例如:
System.IO
Public void StartIO(Stream ioStream)
?
ü?把缩写词首字母为三个或三个以上字母第一字母大写,当是camelCasing风格的标识符作为第一单词来命名。
例如:
System.Xml
Public void processHtmlTag(string htmlTag)
?
ü?不要把camelCasing风格的标识符头部的任何首字母缩写词的任何字母大写,无论首字母缩写词的长度是多少。
ü?在涉及大小写时,大多数复合词术语要作为单个单词处理。
?
ü?不要把闭合形式的复合词中每个单词的首字母大写。
?
ü?常用的复合词和常用术语的大小写及拼写。如下表:
?
Pascal
Camel
Not
BitFlag
bitFlag
Bitflag
Callback
callback
CallBack
Canceled
canceled
Cancelled
DoNot
doNot
dont
Endpoint
endpoint
EndPoint
FileName
fileName
Filename
Gridline
gridline
GridLine
Hashtable
hashtable
HashTable
Id
id
ID
Indexes
indexes
Indices
LogOff
logOff
LogOut
LogOn
logOn
LogIn
Metadata
metadata
MetaData,metaData
Multipanel
multipanel
MultiPanel
Multiview
multiview
MultiView
Namespace
namespace
NameSpace
Ok
ok
OK
Pi
pi
PI
Placehoder
placehoder
PlaceHoder
Signln
signln
SignOn
SignOut
signOut
SignOff
UserName
userName
Username
WhiteSpace
whiteSpace
Whitespace
Writable
writable
Writeable
?
ü?任何外部可访问的API不应该仅通过大小写来区分位于同一个上下文中的两个名字。
?
ü?区分大小写只有一条规范:不要以为所有的编程语言都是区分大小写的,实际情况并非如此。不应该仅仅通过大小写来区分名字。
ü?为标识符选择易于阅读的名字。
?
ü?要更看重可读性,而不是更看重简短性。如属性名CanScrollHorizontally要胜过ScrollableX。
?
??不要使用下划线、连字符以及其他任何既非字母也非数字的字符。
?
??不要使用匈牙利命名法。
?
??避免使用与广泛使用的编程语言的关键字有冲突的标识符。
??不要使用缩写词和缩约词作为标识符名字的一部分。
例如:要用GetWindow,而不用GetWin。
?
??不要使用未被广泛接受的首字母缩写词,即使是被广泛接受的首字母缩写词,也只应该在必需的时候才使用。
例如:UI用来表示User Interface,HTML用来表示Hypertext Markup Language。虽然
许多框架设计师认为一些新近的首字母缩写词很快就会被广泛接受,但在框架的标识
符中使用它们仍是不好的做法。
ü?要给类型名使用语义上有意义的名字,而不要使用语言特有的关键字。
例如:GetLength这个名字比GetInt要好。
?
ü?要使用CLR的通用类型名,而不要使用语言特有的别名——如果除了类型之外,标识符没有其他的语义。
例如:一个把类型转换为System. Int64的方法应该被命名为ToInt64,而不是ToLong
(因为System. Int64是CLR类型名,它对应于C#特有的别名long)。
?
ü?语言特有的类型名及对应的CLR类型名,如下表:
?
C#
Visual Basic
C++
?