C#的命名规范范文.docx
- 文档编号:28875350
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:22.38KB
C#的命名规范范文.docx
《C#的命名规范范文.docx》由会员分享,可在线阅读,更多相关《C#的命名规范范文.docx(16页珍藏版)》请在冰豆网上搜索。
C#的命名规范范文
C#的命名规范
1、命名约定Pascal和Camel命名约定
编程的命名方式主要有Pascal和Camel两种(Pascal:
每个单词的首字母大写,例如ProductType;Camel:
首个单词的首字母小写,其余单词的首字母大写,例如productType)
以下是一些常用的C#成员及其推荐命名方法:
标志符规则实例与描述
类classPascalApplication
枚举类型enumPascal记住,是以Pascal命名,切勿包含Enum,否则FXCop会抛出Issue
委托delegatePascal以Pascal命名,不以任何特殊字符串区别于类名、函数名
常量const全部大写全部大写,单词间以下划线隔开
接口interfacePascalIDisposable注:
总是以I前缀开始,后接Pascal命名
方法functionPascalToString
命名空间namespacePascal以.分隔,当每一个限定词均为Pascal命名方式,比如:
usingExcelQuicker.Framework
参数Camel首字母小写
局部变量Camel也可以加入类型标识符,比如对于System.String类型,声明变量是以str开头,stringstrSQL=string.Empty;
数据成员Camel以m开头+Pascal命名规则,如mProductType(m意味member)
属性Pascal
1.1、局部变量命名在primitive的局部变量命名时,使用Camel命名规则,
比如:
inttype=0;
doublecount=0;
…
对于string类型定义,通常使用str前缀+Pascal命名的方式,
比如stringstrSql="";//这是一种典型的命名SQL语句字符串的方式。
而对于此外的类型对象定义,通常的做法是使用obj前缀+Pascal命名的方式,来告知我们这个变量是一个对象。
或者也可以直接使用类名的Camel命名规则。
比如:
ApplicationobjApplication=newApplication();
Applicationapplication=newApplication();
1.2、参数命名Camel命名规则,首字母小写
1.3、类数据成员/属性命名,数据成员命名以Camel命名方式,而属性以Pascal命名。
通常如果数据成员与属性成对的话,数据成员与属性的命名区别仅在于变量名的第一个字母是小写还是大写。
比如
classAppcalition
{
privateArrayListworksheetCollection=newArrayList();
publicArrayListWorksheetCollection
{
get
{
returnthis.worksheetCollection;
}
}
}
另外,类的成员数据/方法调用时,应该加上this限定符,this在编辑环境中是蓝色的,更利于我们区分局部变量、参数或静态变量,并且利于FXCop检测区分。
(如果使用FxCop扫描和检测代码的话)
1.4、命名空间命名在dot之间的各限定字符串符合Pascal格式
1.5、委托缩写委托的命名方式我常常以Pascal命名,并且在命名的后面加EventHandler
比如publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);//用于处理与鼠标相关的事件或委托
对于自定义的委托,其参数第一个建议仍然使用objectsender,sender代表触发这个时间或委托的源对象。
而第二个参数继承于EventArgs类,并且在派生类中实现自己的业务逻辑。
1.6、自定义异常类自定义异常类以Exception结尾,并且在类名中能清楚的描述出该异常的原因。
比如NotFoundFileException,描述出了某个实体(文件、内存区域等)无法被找到。
1.7、枚举枚举的命名是Pascal命名,不需要在枚举中加入Enum,枚举的名称能清楚的表明该枚举的用途。
1.8、常量命名全部大写,单词间并且以下划线间隔,如publicconstintLOCK_SECONDS=3000;虽然在MSDN中常量的命名推荐使用Pascal,但是从C++沿袭的命名规则来看,将常量全部大写更加能清楚的表示常量与普通变量之间的区别。
1.9、命名缩写在一般情况下,不推荐缩写命名,不要担心变量命名长,长的变量名能使变量的意义更加清晰,其实从长变量名的负面作用三,因为Ctrl+C和Ctrl+V加上在VS中的智能感知,其负面追用已经很小。
变量命名的原则是,尽最大努力让其他人在看到我们的变量/函数/…等的第一时间,大概能猜出它是做什么的。
比如:
intproductTypeCount=0;//我们在第一时间就能知道它是记录产品的数量的变量
而对于糟糕的命名方式:
intprodTypeCount=0;//它是productTypeCount的简写,我们一部分人也许知道prod是product的缩写,但是每人能保证所有的人都知道它。
我个人认为:
最优秀的代码它本身就是注释。
作为一流的程序员。
并不仅仅实现功能,而是要让我们的代码更加优美,具备让他人维护或今后扩充的能力。
作为现在的业务系统,其门槛的准入水平已大大降低,实现功能上的需求已没有什么难度,但是高手和菜鸟的区别在于,高手的代码通俗易懂,在整个编码的过程中,不仅能考虑到性能、还会考虑代码可读性和维护性。
1.10、数据库命名数据库的字段、表名的命名都推荐采用Pascal命名方式,尽量不采用缩写。
当然,使用长的字段名、表名,可能会使SQL语句的编写带来负面影响。
我推荐大家可以使用一些ORM,ORM的性能肯定不会比直接写SQL的好,但是如果做业务系统,更重要的是系统多久能交付用户使用,ORM不仅使开发时间可以缩短不少,并且在后期的维护上也比直接写SQL便利很多。
引用回复
IT小白[1楼]
圈副
圈积分:
114
发短消息去家园加好友博客
RE:
C#的命名规范2009-03-1815:
19:
20
2、注释规范2.1、文件头部注释在代码文件的头部进行注释,这样做的好处在于,我们能对代码文件做变更跟踪。
在代码头部分标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的开发和修改。
样本:
/********************************************************************************
**作者:
Eunge
**创始时间:
2004-6-8
**修改人:
Lucy
**修改时间:
2004-12-9
**修改人:
Lucy
**修改时间:
2005-01-29
**描述:
**主要用于产品信息的资料录入,…
*********************************************************************************/
2.2、函数、属性、类等注释
请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。
以protected,protectedInternal,public声明的定义注释都建议以这样命名方法。
例如:
///
///用于从ERP系统中捞出产品信息的类
///
classProductTypeCollector
{
…
}
2.3、逻辑点注释在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG。
在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考耀修改的是注释还是程序了…
引用回复
IT小白[2楼]
圈副
圈积分:
114
发短消息去家园加好友博客
RE:
C#的命名规范2009-03-1815:
19:
31
3、排版我的排版原则与建议:
1、每行语句至少占一行,如果语句过长(超过一屏),则该语句断为两行显示;
2、把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion,我最喜欢把机器生成的代码都放在一个#region里面,比如在编写ASP.NET程序时,对应自动产生的控件定义,我常用#regionAutomaticGeneratedWebComponents…#endregion把他们框住
3、使用空格,
(1)双目操作符的前后加空格(+,=,&&等),index=index+1;
(2)单目操作符前加空格(!
++,~等),index++;
(3)逗号、分号只在后面加空格
4、使用空行,在一段功能代码、或者函数、属性之间插入空行,这样会很直观。
在VisualStudio2005中,其实已经带有代码格式化这样的功能,快捷键是Ctrl+K->Ctrl+D。
4、界面控件命名我的建议是使用默认控件名作为前缀,前缀名称全部小写,这样的好处是不必为未知的控件统一命名方式发愁,比如对于Label标签控件,有的人用缩写lbl,有的人用lab,有的人用lb。
这样其实仍然是避免使用缩写,有的时候仍然会使命名变得冗长,但是命名更加能反应出变量的意义,并且各个开发人员也能更好的执行,因为他们不需要去背记各个变量的缩写。
protectedSystem.Web.UI.WebControls.ButtonbuttonQuery;
protectedSystem.Web.UI.WebControls.DropDownListdropdownlistProductType;
protectedSystem.Web.UI.WebControls.TextBoxtextboxManufactureDate;
5、代码可读性一些建议
(1)注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰
(2)避免使用不易理解的数字,用有意义的标识来替代(枚举和常量)
比如:
if(productType==0)
…
elseif(productType==1)
…
(不推荐使用)if(productType==ProductType.CD)
…
elseif(productType==ProductType.DVD)
…
(推荐使用)
(3)在界面层中尽量使用异常处理try语句,不要将系统级别的错误直接暴露给用户,而更应该的是把系统抛出的错误信息记录到LOG日志文件中去,告诉用户友好的提示信息
在VisualStudio2005里面,有代码布局格式化功能,蛮有用的。
其实代码的规范是为了使系统具有整体一致的编码风格,以使后期维护人员能更快的读懂代码并进行维护。
我认为代码规范有其必要性,但不能因为规范而规范,从开发而言,开发是为了更快的做出稳定的系统,而稳定的系统是为了给公司带来受益。
开发人员、项目管理人员都应该更多的从项目经营的角度出来,同时站在公司、客户的角度考虑问题,而不是因为代码而代码。
C#开发编码规范
1.命名
1.1类变量命名:
类变量命名一律用下划线开头,多个单词组成,第一个字母小写的,其他单词第一个字母大写。
publicclassC{
//变量类例子
privateint_intSample;
}
1.2类命名:
类命名一律由大写字母开头的各个单词组成。
///
///类命名例子
///
publicclassClassSample{
//…
}
1.3局部变量命名:
由小写字母开头,其他单词开头字母大写的各单词组成。
…
//局部变量例子
intintLocalVar;
…
1.4函数命名:
由小写字母开头,其他各大写开头的各单词组成。
///
///函数命名例子
///
publicvoidgetValue(inttype){
…
}
1.5枚举类型命名:
一律由大写字母”E”开头,第一个字母大写的各个单词组成
publicenumESample{
EMPTY,
A,
B
}
并确保,枚举类型中有个约定的EMPTY元素.
1.6接口类型命名:
一律由大写字母”I”开头,第一个字母大写的各单词组成
///
///接口样例
///
publicinterfaceISample{
///
///获取对象
///
objectgetValue();
}
1.7抽象类的命名:
一律由大写字母”A”开头,第一个字母大写的各单词组成
///
///抽象类样例
///
publicabstractclassASample{
///
///获取对象
///
publicabstractobjectgetValue();
}
1.7数组变量命名:
数组变量一律用”arr”开头的变量.
//数组对象
protectedobject[]arrSample;
1.8函数参数命名:
和局部变量命名一致,参见1.3
1.9常数命名:
常数命名要所有字母都要大写,并且单词之间用”_”连接,而第一个单词是常量的类型名称或者类型名称的缩写.
//整数常量样例
publicconstintINT_SAMPLE=0;
//字符串型常量
publicconststringSTR_SAMPLE=“sample”;
1.10静态变量命名:
静态变量需要以”S_”开头,后跟局部变量命名的方法构成的变量名称:
//静态变量样例
publicstaticintS_intSample;
1.11名空间命名:
名空间命名需要和工程文件夹一一对应,并且根空间保持为OKShare,
而文件夹的命名规范和类命名规范保持一致.
项目OKSample下面的Sample文件夹中有一个接口为ISample,它的名空间应为
OKShare.OKSample.Sample
2.注释。
2.1文件注释:
建立一个文件的时候,需要在文件开始部分注明:
文件的建立者,建立时间,以及该文件的意义,用途。
FileSample.cs:
/**
*
*CreatedByShawnAt2005-12-04
*该文件包含实现……的类,用来完成……
*
*/
…
2.2类变量注释:
类变量注释,需要为每一个设立的类变量指明该变量的意义,用途,用“//”在变量的上一行指明,和变量左对齐。
例子,参见1.1。
2.3类注释和函数注释,类注释和函数注释按照VisualStudio的注释风格进行,在类或函数定义的上一行,用
///
///注释
///
表示,VS支持自动生成这些注释行。
例子,参见1.2(类注释)和1.4(函数注释)
2.4缩进:
每一个层次之间都需要有一个Tab键的缩进.如名空间定义和类定义之间,类定义和类元素定义之间.
namespaceOKShare.OKSample.Sample{
publicclassC{
……
}
}
3.初始化
3.1类变量的初始化:
除非静态变量,否则不要在定义的时候进行赋值初始化,而需要在构造函数的时候进行统一初始化函数init().要求每一个编写的类都需要有init()函数,除非该类只提供一些静态的Utility操作.
不要:
publicclassC{
//静态类变量样例
publicstaticstringS_strSample=“Iamstaticstring”;
//变量类例子
privateint_intSample=0;
}
而要:
publicclassC{
//类变量例子
privateint_intSample;
//静态变量
publicstaticintS_intSample=0;
///
///构造函数
///
publicC(){
this.init();
}
///
///初始化类方法
///
protectedvoidinit(){
this._intSample=0;
}
///
///样例
///
protectedvoiddummy(){
…
inta=C.S_intSample;
…
}
}
4.调用:
4.1类内变量和函数:
类内函数&变量的调用一定要在前面加上”this.”,例子参见3.1中的代码(构造函数中的this.init()和函数init中的this._intSample).
4.2类常量&类静态变量,以及静态方法:
类内静态元素(元素包括变量&方法)的调用,一定要在前面加上该类的名字,样例参见3.1中的静态元素的调用.
4.3系统类的使用:
系统类型的使用,.Net中对于基本数值类型,都有相应的引用类型定义,在一般表示的情况下,我们使用小写字母开头的类型,而用到他们方法和数据的时候,则使用引用空间的名称.比如,string有System.String对应,int有System.Int32对应.
…
//注意string和String的使用地方
stringstrSample=String.Empty;
//注意int和Int32的使用地方
intintSample=0;
System.Int32.Equals(intSample,3);
4.4引用类型转换:
我们不要使用类型加在前面的转换方式,而使用as,这样当转换不成功时,也不会有异常,但可以根据转换结果进行判断.
objectobj;
……
不要:
ISamplesam=(ISample)obj;
而要:
ISamplesam=objasISample;
if(null==sam){//转换失败
}
5.DotNet编程提醒
5.1.循环语句
对一个容器进行循环,如果该容器已经实现了IEnumerable或者IEnumerator接口,那么我们推荐使用foreach…in…语句,例如:
ICollectioncoll中存放了一些ISample对象,那么我们的遍历:
foreach(ISamplesampincoll){
//对samp处理
……
}
对于经典的for循环.
for(inti=0;i ISamplesamp=coll[i]asISample; } 我们应该这样写: 避免循环的每次都调用coll.Count()方法,而不必要的损失性能. for(inti=0,size=coll.Count();i ISamplesamp=coll[i]asISample; } 5.2.在需要大量字符串连接的时候,要使用StringBuilder类,而不是使用string+string+string……的方法: … 不要: stringstrSample=“a”+”b”+”c”+”d”+”e”; 而要: StringBuildersb=newStringBuilder(); sb.append(“a”); sb.append(“b”); sb.append(“c”); sb.append(“d”); sb.append(“e”); stringstrSample=sb.ToString(); … 在需要使用格式化字符串时,使用String.Format而不是使用字符串相加,例如 … 不要: stringstrName=“Shawn”; stringstrAge=“23”; stringstrSample=“Iam”+strName+”,myageis”+strAge; 而要: stringstrSample= String.Format(“Iam{0},myageis{1}”,strName,strAge);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 命名 规范 范文