.Net项目命名规范
2007-03-13 10:32
309 查看
目录
1概述...3
2变量命名的总原则...3
2.1一般性规则...3
2.2对特定类型数据的命名...3
2.3关于短名称的使用...4
2.4其它应当避免的命名问题...4
3VisualStdio.Net..4
3.1大写样式...4
3.2区分大小写...5
3.3缩写...6
3.4措词...6
3.5避免类型名称混淆...7
3.6命名空间命名指南...9
3.7类命名指南...10
3.8接口命名指南...10
3.9特性命名指南...11
3.10枚举类型命名指南...12
3.11静态字段命名指南...12
3.12参数命名指南...12
3.13方法命名指南...13
3.14属性命名指南...13
3.15事件命名指南...15
命名规范将包括:编程命名规范,业务对象命名规范,数据库命名规范,Web站点结构命名规范等。
编码规范将包括:C#编码规范,第三方模块使用规范等
本命名规范主要针对使用VisualStdio.Net(VB.NET语言及C#语言)规范,即编程命名规范部分。请注意:在本项目过程中,C#将作为首选语言,如非特别必要,不要选用VB.NET。
·名称应当反映了业务上的问题而不是技术上或编程上的解决方法
·名称的长度应当足够长
·名称的最后一部分应当有限定符
·应当用Count,Index或Nbr代替Num,No.
·临时变量的命名应当有意义
·所有布尔型变量的命名能够直接从名称上看出为真的条件
·枚举类型的变量名称应当包含了基础类型,能够方便的分辨变量的类型。例如:用Color变量表示ColorRed,ColorGreen枚据类型的值。
·命名的常量应当代表了抽象的实体而非他们所代表的值
·从变量命名中应当可以看出变量的作用域是局部变量,模块变量或者全局变量
·变量的名称中不同的单词首字母要大写,以方便阅读
·如果变量中单词的缩写只能缩短一两个字符则使用单词的完全拼写
·所有单词的缩写规则应当一致
·两个不同的命名具有相似的含义
·不同的命名拼写很相似,仅差一两个字符
·在变量名称中不应当使用数字
·完全和变量含义不相关的命名
Pascal大小写
将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal大小写。例如:
BackColor
Camel大小写
标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:
backColor
大写
标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:
System.IO
System.Web.UI
可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。
下表汇总了大写规则,并提供了不同类型的标识符的示例。
不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。
不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。
namespaceee.cummings;
namespaceEe.Cummings;
不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。
voidMyFunction(stringa,stringA)
不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Pointp和POINTp是不适当的类型名称,原因是它们仅是大小写有区别。
System.Windows.Forms.Pointp
System.Windows.Forms.POINTp
不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,intColor和intCOLOR是不适当的属性名称,原因是它们仅是大小写有区别。
intColor{get,set}
intCOLOR{get,set}
不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate和Calculate是不适当的方法名称,原因是它们仅是大小写有区别。
voidcalculate()
voidCalculate()
不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用
不要使用计算机领域中未被普遍接受的缩写。
在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用
在使用缩写时,对于超过两个字符长度的缩写请使用Pascal大小写或Camel大小写。例如,使用HtmlButton或HTMLButton。但是,应当大写仅有两个字符的缩写,如,
不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用Camel大小写,虽然这和单词的标准缩写相冲突。
另外,避免使用和以下关键字冲突的标识符。
使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。
[VisualBasic]
SubWrite(valueAsDouble);
SubWrite(valueAsSingle);
SubWrite(valueAsLong);
SubWrite(valueAsInteger);
SubWrite(valueAsShort);
[C#]
voidWrite(doublevalue);
voidWrite(floatvalue);
voidWrite(longvalue);
voidWrite(intvalue);
voidWrite(shortvalue);
不要创建语言特定的方法名称,如下面的示例所示。
[VisualBasic]
SubWrite(doubleValueAsDouble);
SubWrite(singleValueAsSingle);
SubWrite(longValueAsLong);
SubWrite(integerValueAsInteger);
SubWrite(shortValueAsShort);
[C#]
voidWrite(doubledoubleValue);
voidWrite(floatfloatValue);
voidWrite(longlongValue);
voidWrite(intintValue);
voidWrite(shortshortValue);
如果有必要为每个基本数据类型创建唯一命名的方法,那么在这种极为罕见的情况下请使用通用类型名称。下表列出基本数据类型名称和它们的通用替换。
例如,支持将从流读取各种数据类型的类可以有以下方法。
[VisualBasic]
ReadDouble()AsDouble
ReadSingle()AsSingle
ReadInt64()AsLong
ReadInt32()AsInteger
ReadInt16()AsShort
[C#]
doubleReadDouble();
floatReadSingle();
longReadInt64();
intReadInt32();
shortReadInt16();
前面的示例优于下面的语言特定的替换。
[VisualBasic]
ReadDouble()AsDouble
ReadSingle()AsSingle
ReadLong()AsLong
ReadInteger()AsInteger
ReadShort()AsShort
[C#]
doubleReadDouble();
floatReadFloat();
longReadLong();
intReadInt();
shortReadShort();
例如:
给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如,
在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有
嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类。但是,System.Web.UI中的类不依赖于System.UI.Design中的类。
应当对命名空间使用Pascal大小写,并用句点分隔逻辑组件,如
如果在语义上适当,使用复数命名空间名称。例如,使用
不要为命名空间和类使用相同的名称。例如,不要既提供
最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集
在本项目中,最外层的命名空间采用DigitalCompany.DotShare。
使用名词或名词短语命名类。
使用Pascal大小写。
少用缩写。
不要使用类型前缀,如在类名称上对类使用
不要使用下划线字符(_)。
有时候需要提供以字母I开始的类名称,虽然该类不是接口。只要I是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称IdentityStore是适当的。
在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,
下面是正确命名的类的示例。
用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称IComponent使用描述性名词。接口名称ICustomAttributeProvider使用名词短语。名称IPersistable使用形容词。
使用Pascal大小写。
少用缩写。
给接口名称加上字母
在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母
不要使用下划线字符(_)。
以下是正确命名的接口的示例。
以下代码示例阐释如何定义IComponent接口及其标准实现Component类。
[VisualBasic]
PublicClassObsoleteAttribute
[C#]
publicclassObsoleteAttribute{}
对于Enum类型和值名称使用Pascal大小写。
少用缩写。
不要在Enum类型名称上使用
对大多数Enum类型使用单数名称,但是对作为位域的Enum类型使用复数名称。
总是将FlagsAttribute添加到位域Enum类型。
使用名词、名词短语或者名词的缩写命名静态字段。
使用Pascal大小写。
对静态字段名称使用匈牙利语表示法前缀。
建议尽可能使用静态属性而不是公共静态字段。
使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
对参数名称使用Camel大小写。
使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
不要给参数名称加匈牙利语类型表示法的前缀。
以下是正确命名的参数的示例。
使用动词或动词短语命名方法。
使用Pascal大小写。
以下是正确命名的方法的实例。
使用名词或名词短语命名属性。
使用Pascal大小写。
不要使用匈牙利语表示法。
考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为Color的属性,则属性的类型同样应该是Color。请参阅本主题中后面的示例。
以下代码示例阐释正确的属性命名。
以下代码示例阐释提供其名称与类型相同的属性。
以下代码示例不正确,原因是Color属性是Integer类型的。
在不正确的示例中,不可能引用Color枚举的成员。
对事件处理程序名称使用EventHandler后缀。
指定两个名为sender和e的参数。sender参数表示引发事件的对象。sender参数始终是object类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为e的事件类的实例中。对e参数类型使用适当而特定的事件类。
用EventArgs后缀命名事件参数类。
考虑用动词命名事件。
使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的Close事件应当具有Closing事件和Closed事件。不要使用BeforeXxx/AfterXxx命名模式。
不要在类型的事件声明上使用前缀或者后缀。例如,使用Close,而不要使用OnClose。
通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为OnXxx)。此方法只应具有事件参数e,因为发送方总是类型的实例。
以下示例阐释具有适当名称和参数的事件处理程序。
[VisualBasic]
PublicDelegateSubMouseEventHandler(senderAsObject,eAsMouseEventArgs)
[C#]
publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);
以下示例阐释正确命名的事件参数类。
[VisualBasic]
PublicClassMouseEventArgs
InheritsEventArgs
DimxAsInteger
DimyAsInteger
PublicSubNewMouseEventArgs(xAsInteger,yAsInteger)
me.x=x
me.y=y
EndSub
PublicPropertyXAsInteger
Get
Returnx
EndGet
EndProperty
PublicPropertyYAsInteger
Get
Returny
EndGet
EndProperty
EndClass
[C#]
publicclassMouseEventArgs:EventArgs
{
intx;
inty;
publicMouseEventArgs(intx,inty)
{this.x=x;this.y=y;}
publicintX{get{returnx;}}
publicintY{get{returny;}}
}
转:http://digitalghost.cnblogs.com/articles/22150.html
1概述
dotShare系统改造项目的建设过程中,将涉及到VisualStudio.NET、Web站点,业务对象及数据库,同时项目人员包括设计人员、开发人员和测试人员等较多。为了保持应用程序、组件、文件的一致性,便于阅读和管理代码和结构,提高开发效率和产品的标准化,特制订一套开发规范和标准(包括命名规范和编码规范)。好的编码约定可使源代码严谨、可读性强且语意清楚,做到与其它语言约定相一致,并且提高直观性。希望设计/开发人员严格遵守此套开发规范和标准,并落实到自己的设计与代码程序中。命名规范将包括:编程命名规范,业务对象命名规范,数据库命名规范,Web站点结构命名规范等。
编码规范将包括:C#编码规范,第三方模块使用规范等
本命名规范主要针对使用VisualStdio.Net(VB.NET语言及C#语言)规范,即编程命名规范部分。请注意:在本项目过程中,C#将作为首选语言,如非特别必要,不要选用VB.NET。
2变量命名的总原则
变量命名的总原则是一个通用性的原则,本规范后续章节中的命名规则都应当符合这些总原则。2.1一般性规则
·变量名称应当准确完整地描述了变量的含义·名称应当反映了业务上的问题而不是技术上或编程上的解决方法
·名称的长度应当足够长
·名称的最后一部分应当有限定符
·应当用Count,Index或Nbr代替Num,No.
2.2对特定类型数据的命名
·循环计数变量的的名称应当有含义(如果循环语句的长度超过了两行或者存在着嵌套循环,尽量避免使用I,j,k之类的变量,应该使用有意义的变量)·临时变量的命名应当有意义
·所有布尔型变量的命名能够直接从名称上看出为真的条件
·枚举类型的变量名称应当包含了基础类型,能够方便的分辨变量的类型。例如:用Color变量表示ColorRed,ColorGreen枚据类型的值。
·命名的常量应当代表了抽象的实体而非他们所代表的值
·从变量命名中应当可以看出变量的作用域是局部变量,模块变量或者全局变量
·变量的名称中不同的单词首字母要大写,以方便阅读
2.3关于短名称的使用
·如果不是绝对必须,尽量避免使用短的名称·如果变量中单词的缩写只能缩短一两个字符则使用单词的完全拼写
·所有单词的缩写规则应当一致
2.4其它应当避免的命名问题
·名称具有误导性·两个不同的命名具有相似的含义
·不同的命名拼写很相似,仅差一两个字符
·在变量名称中不应当使用数字
·完全和变量含义不相关的命名
3VisualStdio.Net
3.1大写样式
使用下面的三种大写标识符约定。Pascal大小写
将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal大小写。例如:
BackColor
Camel大小写
标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:
backColor
大写
标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:
System.IO
System.Web.UI
可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。
下表汇总了大写规则,并提供了不同类型的标识符的示例。
标识符 | 大小写 | 示例 |
类 | Pascal | AppDomain |
枚举类型 | Pascal | ErrorLevel |
枚举值 | Pascal | FatalError |
事件 | Pascal | ValueChange |
异常类 | Pascal | WebException 注意总是以Exception后缀结尾。 |
只读的静态字段 | Pascal | RedValue |
接口 | Pascal | IDisposable 注意总是以I前缀开始。 |
方法 | Pascal | ToString |
命名空间 | Pascal | System.Drawing |
参数 | Camel | typeName |
属性 | Pascal | BackColor |
受保护的实例字段 | Camel | redValue 注意很少使用。属性优于使用受保护的实例字段。 |
公共实例字段 | Pascal | RedValue 注意很少使用。属性优于使用公共实例字段。 |
3.2区分大小写
为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则:不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。
不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。
namespaceee.cummings;
namespaceEe.Cummings;
不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。
voidMyFunction(stringa,stringA)
不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Pointp和POINTp是不适当的类型名称,原因是它们仅是大小写有区别。
System.Windows.Forms.Pointp
System.Windows.Forms.POINTp
不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,intColor和intCOLOR是不适当的属性名称,原因是它们仅是大小写有区别。
intColor{get,set}
intCOLOR{get,set}
不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate和Calculate是不适当的方法名称,原因是它们仅是大小写有区别。
voidcalculate()
voidCalculate()
3.3缩写
为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用
GetWindow,而不要使用
GetWin。
不要使用计算机领域中未被普遍接受的缩写。
在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用
UI作为UserInterface的缩写,用
OLAP作为On-lineAnalyticalProcessing的缩写。
在使用缩写时,对于超过两个字符长度的缩写请使用Pascal大小写或Camel大小写。例如,使用HtmlButton或HTMLButton。但是,应当大写仅有两个字符的缩写,如,
System.IO,而不是
System.Io。
不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用Camel大小写,虽然这和单词的标准缩写相冲突。
3.4措词
避免使用与常用的.NET框架命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms或UI。有关.NET框架命名空间的列表,请参阅类库。另外,避免使用和以下关键字冲突的标识符。
AddHandler | AddressOf | Alias | And | Ansi |
As | Assembly | Auto | Base | Boolean |
ByRef | Byte | ByVal | Call | Case |
Catch | Cbool | CByte | CChar | CDate |
CDec | CDbl | Char | CInt | Class |
CLng | Cobj | Const | CShort | CSng |
CStr | Ctype | Date | Decimal | Declare |
Default | Delegate | Dim | Do | Double |
Each | Else | ElseIf | End | Enum |
Erase | Error | Event | Exit | ExternalSource |
False | Finalize | Finally | Float | For |
Friend | Function | Get | GetType | Goto |
Handles | If | Implements | Imports | In |
Inherits | Integer | Interface | Is | Let |
Lib | Like | Long | Loop | Me |
Mod | Module | MustInherit | MustOverride | MyBase |
MyClass | Namespace | New | Next | Not |
Nothing | NotInheritable | NotOverridable | Object | On |
Option | Optional | Or | Overloads | Overridable |
Overrides | ParamArray | Preserve | Private | Property |
Protected | Public | RaiseEvent | ReadOnly | ReDim |
Region | REM | RemoveHandler | Resume | Return |
Select | Set | Shadows | Shared | Short |
Single | Static | Step | Stop | String |
Structure | Sub | SyncLock | Then | Throw |
To | True | Try | TypeOf | Unicode |
Until | Volatile | When | While | With |
WithEvents | WriteOnly | Xor | eval | extends |
instanceof | Package | var |
3.5避免类型名称混淆
不同的编程语言使用不同的术语标识基本托管类型。类库设计人员必须避免使用语言特定的术语。请遵循本节中描述的规则以避免类型名称混淆。使用描述类型的含义的名称,而不是描述类型的名称。如果参数除了其类型之外没有任何语义含义,那么在这种罕见的情况下请使用一般性名称。例如,支持将各种数据类型写入到流中的类可以有以下方法。
[VisualBasic]
SubWrite(valueAsDouble);
SubWrite(valueAsSingle);
SubWrite(valueAsLong);
SubWrite(valueAsInteger);
SubWrite(valueAsShort);
[C#]
voidWrite(doublevalue);
voidWrite(floatvalue);
voidWrite(longvalue);
voidWrite(intvalue);
voidWrite(shortvalue);
不要创建语言特定的方法名称,如下面的示例所示。
[VisualBasic]
SubWrite(doubleValueAsDouble);
SubWrite(singleValueAsSingle);
SubWrite(longValueAsLong);
SubWrite(integerValueAsInteger);
SubWrite(shortValueAsShort);
[C#]
voidWrite(doubledoubleValue);
voidWrite(floatfloatValue);
voidWrite(longlongValue);
voidWrite(intintValue);
voidWrite(shortshortValue);
如果有必要为每个基本数据类型创建唯一命名的方法,那么在这种极为罕见的情况下请使用通用类型名称。下表列出基本数据类型名称和它们的通用替换。
C#类型名称 | VisualBasic类型名称 | JScript类型名称 | VisualC++类型名称 | Ilasm.exe表示形式 | 通用类型名称 |
sbyte | Sbyte | sByte | char | int8 | SByte |
byte | Byte | byte | unsignedchar | unsignedint8 | Byte |
short | Short | short | short | int16 | Int16 |
ushort | UInt16 | ushort | unsignedshort | unsignedint16 | UInt16 |
int | Integer | int | int | int32 | Int32 |
uint | UInt32 | uint | unsignedint | unsignedint32 | UInt32 |
long | Long | long | __int64 | int64 | Int64 |
ulong | UInt64 | ulong | unsigned__int64 | unsignedint64 | UInt64 |
float | Single | float | float | float32 | Single |
double | Double | double | double | float64 | Double |
bool | Boolean | boolean | bool | bool | Boolean |
char | Char | char | wchar_t | char | Char |
string | String | string | String | string | String |
object | Object | object | Object | object | Object |
[VisualBasic]
ReadDouble()AsDouble
ReadSingle()AsSingle
ReadInt64()AsLong
ReadInt32()AsInteger
ReadInt16()AsShort
[C#]
doubleReadDouble();
floatReadSingle();
longReadInt64();
intReadInt32();
shortReadInt16();
前面的示例优于下面的语言特定的替换。
[VisualBasic]
ReadDouble()AsDouble
ReadSingle()AsSingle
ReadLong()AsLong
ReadInteger()AsInteger
ReadShort()AsShort
[C#]
doubleReadDouble();
floatReadFloat();
longReadLong();
intReadInt();
shortReadShort();
3.6命名空间命名指南
命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示。CompanyName.TechnologyName[.Feature][.Design]
例如:
Microsoft.Media
Microsoft.Media.Design
给命名空间名称加上公司名称或者其他知名商标的前缀可以避免两个已经发布的命名空间名称相同的可能性。例如,
Microsoft.Office是由Microsoft提供的OfficeAutomationClasses的一个适当的前缀。
在第二级分层名称上使用稳定的、公认的技术名称。将组织层次架构用作命名空间层次架构的基础。命名一个命名空间,该命名空间包含为具有
.Design后缀的基命名空间提供设计时功能的类型。例如,System.Windows.Forms.Design命名空间包含用于设计基于System.Windows.Forms的应用程序的设计器和相关的类。
嵌套的命名空间应当在包含它的命名空间中的类型上有依赖项。例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类。但是,System.Web.UI中的类不依赖于System.UI.Design中的类。
应当对命名空间使用Pascal大小写,并用句点分隔逻辑组件,如
Microsoft.Office.PowerPoint中所示。如果您的商标使用非传统的大小写,请遵循您的商标所定义的大小写,即使它与规定的Pascal大小写相背离。例如,命名空间
NeXT.WebObjects和
ee.cummings阐释了对于Pascal大小写规则的适当背离。
如果在语义上适当,使用复数命名空间名称。例如,使用
System.Collections而不是
System.Collection。此规则的例外是商标名称和缩写。例如,使用
System.IO而不是
System.IOs。
不要为命名空间和类使用相同的名称。例如,不要既提供
Debug命名空间也提供
Debug类。
最后,请注意命名空间名称不必非得与程序集名称相似。例如,如果命名程序集
MyCompany.MyTechnology.dll,它没有必要非得包含
MyCompany.MyTechnology命名空间。
在本项目中,最外层的命名空间采用DigitalCompany.DotShare。
3.7类命名指南
以下规则概述命名类的指南:使用名词或名词短语命名类。
使用Pascal大小写。
少用缩写。
不要使用类型前缀,如在类名称上对类使用
C前缀。例如,使用类名称
FileStream,而不是
CFileStream。
不要使用下划线字符(_)。
有时候需要提供以字母I开始的类名称,虽然该类不是接口。只要I是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称IdentityStore是适当的。
在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,
ApplicationException对于从名为
Exception的类派生的类是适当的名称,原因是
ApplicationException是一种
Exception。请在应用该规则时进行合理的判断。例如,
Button对于从
Control派生的类是适当的名称。尽管按钮是一种控件,但是将
Control作为类名称的一部分将使名称不必要地加长。
下面是正确命名的类的示例。
[VisualBasic]
PublicClassFileStream
PublicClassButton
PublicClassString
[C#]
publicclassFileStream
publicclassButton
publicclassString
3.8接口命名指南
以下规则概述接口的命名指南:用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称IComponent使用描述性名词。接口名称ICustomAttributeProvider使用名词短语。名称IPersistable使用形容词。
使用Pascal大小写。
少用缩写。
给接口名称加上字母
I前缀,以指示该类型为接口。
在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母
I前缀。
不要使用下划线字符(_)。
以下是正确命名的接口的示例。
[VisualBasic]
PublicInterfaceIServiceProvider
PublicInterfaceIFormatable
[C#]
publicinterfaceIServiceProvider
publicinterfaceIFormatable
以下代码示例阐释如何定义IComponent接口及其标准实现Component类。
[VisualBasic]
PublicInterfaceIComponent
'Implementationcodegoeshere.
EndInterface
PublicClassComponent
ImplementsIComponent
'Implementationcodegoeshere.
EndClass
[C#]
publicinterfaceIComponent
{
//Implementationcodegoeshere.
}
publicclassComponent:IComponent
{
//Implementationcodegoeshere.
}
3.9特性命名指南
应该总是将后缀Attribute添加到自定义属性类。以下是正确命名的属性类的示例。[VisualBasic]
PublicClassObsoleteAttribute
[C#]
publicclassObsoleteAttribute{}
3.10枚举类型命名指南
枚举(Enum)值类型从Enum类继承。以下规则概述枚举的命名指南:对于Enum类型和值名称使用Pascal大小写。
少用缩写。
不要在Enum类型名称上使用
Enum后缀。
对大多数Enum类型使用单数名称,但是对作为位域的Enum类型使用复数名称。
总是将FlagsAttribute添加到位域Enum类型。
3.11静态字段命名指南
以下规则概述静态字段的命名指南:使用名词、名词短语或者名词的缩写命名静态字段。
使用Pascal大小写。
对静态字段名称使用匈牙利语表示法前缀。
建议尽可能使用静态属性而不是公共静态字段。
3.12参数命名指南
以下规则概述参数的命名指南:使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
对参数名称使用Camel大小写。
使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此,通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
不要给参数名称加匈牙利语类型表示法的前缀。
以下是正确命名的参数的示例。
[VisualBasic]
GetType(typeNameAsString)AsType
Format(formatAsString,object[]args)AsString
[C#]
TypeGetType(stringtypeName)
stringFormat(stringformat,args()Asobject)
3.13方法命名指南
以下规则概述方法的命名指南:使用动词或动词短语命名方法。
使用Pascal大小写。
以下是正确命名的方法的实例。
RemoveAll()
GetCharArray()
Invoke()
3.14属性命名指南
以下规则概述属性的命名指南:使用名词或名词短语命名属性。
使用Pascal大小写。
不要使用匈牙利语表示法。
考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为Color的属性,则属性的类型同样应该是Color。请参阅本主题中后面的示例。
以下代码示例阐释正确的属性命名。
[VisualBasic]
PublicClassSampleClass
PublicPropertyBackColorAsColor
'CodeforGetandSetaccessorsgoeshere.
EndProperty
EndClass
[C#]
publicclassSampleClass
{
publicColorBackColor
{
//CodeforGetandSetaccessorsgoeshere.
}
}
以下代码示例阐释提供其名称与类型相同的属性。
[VisualBasic]
PublicEnumColor
'InsertcodeforEnumhere.
EndEnum
PublicClassControl
PublicPropertyColorAsColor
Get
'Insertcodehere.
EndGet
Set
'Insertcodehere.
EndSet
EndProperty
EndClass
[C#]
publicenumColor
{
//InsertcodeforEnumhere.
}
publicclassControl
{
publicColorColor
{
get{//Insertcodehere.}
set{//Insertcodehere.}
}
}
以下代码示例不正确,原因是Color属性是Integer类型的。
[VisualBasic]
PublicEnumColor
'InsertcodeforEnumhere.
EndEnum
PublicClassControl
PublicPropertyColorAsInteger
Get
'Insertcodehere.
EndGet
Set
'Insertcodehere.
EndSet
EndProperty
EndClass
[C#]
publicenumColor{//InsertcodeforEnumhere.}
publicclassControl
{
publicintColor
{
get{//Insertcodehere.}
set{//Insertcodehere.}
}
}
在不正确的示例中,不可能引用Color枚举的成员。
Color.Xxx将被解释为访问一个成员,该成员首先获取Color属性(在VisualBasic中为Integer类型,在C#中为int类型)的值,然后再访问该值的某个成员(该成员必须是System.Int32的实例成员)。
3.15事件命名指南
以下规则概述事件的命名指南:对事件处理程序名称使用EventHandler后缀。
指定两个名为sender和e的参数。sender参数表示引发事件的对象。sender参数始终是object类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为e的事件类的实例中。对e参数类型使用适当而特定的事件类。
用EventArgs后缀命名事件参数类。
考虑用动词命名事件。
使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的Close事件应当具有Closing事件和Closed事件。不要使用BeforeXxx/AfterXxx命名模式。
不要在类型的事件声明上使用前缀或者后缀。例如,使用Close,而不要使用OnClose。
通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为OnXxx)。此方法只应具有事件参数e,因为发送方总是类型的实例。
以下示例阐释具有适当名称和参数的事件处理程序。
[VisualBasic]
PublicDelegateSubMouseEventHandler(senderAsObject,eAsMouseEventArgs)
[C#]
publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);
以下示例阐释正确命名的事件参数类。
[VisualBasic]
PublicClassMouseEventArgs
InheritsEventArgs
DimxAsInteger
DimyAsInteger
PublicSubNewMouseEventArgs(xAsInteger,yAsInteger)
me.x=x
me.y=y
EndSub
PublicPropertyXAsInteger
Get
Returnx
EndGet
EndProperty
PublicPropertyYAsInteger
Get
Returny
EndGet
EndProperty
EndClass
[C#]
publicclassMouseEventArgs:EventArgs
{
intx;
inty;
publicMouseEventArgs(intx,inty)
{this.x=x;this.y=y;}
publicintX{get{returnx;}}
publicintY{get{returny;}}
}
转:
相关文章推荐
- .Net软件项目中的命名规范
- .net项目中的命名规范
- .NET命名规范中文版
- .NET 命名规范
- Java基础学习总结(32)——Java项目命名规范
- .net 命名规范详解
- Java项目命名规范
- iOS 项目第一步,设置启动图标和启动图,图片命名规范
- .Net命名规范
- 项目的命名规范,为以后的程序开发中养成良好的行为习惯
- .NET 控件命名规范
- JavaWeb项目前端规范(采用命名空间使js深度解耦合)
- Java项目命名规范
- android项目命名规范
- 礼拜三log~Mac下eclipse项目环境的搭建 & jsp文件命名规范
- .Net平台开发的技术规范与项目实践精华总结
- javaWeb项目命名规范
- .NET命名规范中文版
- 基于.NET项目的代码书写规范要求书
- Java Web项目前端规范(采用命名空间使js深度解耦合)