C#命名规范 (2)

上传人:fgh****35 文档编号:77513223 上传时间:2022-04-20 格式:DOC 页数:9 大小:92.50KB
收藏 版权申诉 举报 下载
C#命名规范 (2)_第1页
第1页 / 共9页
C#命名规范 (2)_第2页
第2页 / 共9页
C#命名规范 (2)_第3页
第3页 / 共9页
资源描述:

《C#命名规范 (2)》由会员分享,可在线阅读,更多相关《C#命名规范 (2)(9页珍藏版)》请在装配图网上搜索。

1、C#编程命名规范命名规范是一个十分重要但有比较有争议的话题,本文主要谈一下我的体会并介绍一种较常用的C#命名规范。匈牙利命名法我最早接触到的命名规范是匈牙利命名法,该方法出自微软,基本上是一些在你的所有变量前建立一个前缀的规则。这个前缀会说明那个变量的类型。其好处在于,通过它们的前缀,你可以方便地知道两个变量是否兼容。这种方法非常流行,在目前的C和C+开发中还被广泛的使用。匈牙利命名法的不足匈牙利命名法的最大的不足的地方就是繁琐,随着计算机的速度越来越快,IDE已拥有足够的能力,可以开始实时探测变量的类型。因此,当你编程时,IDE能够向你警告类型不兼容的情况(通常普遍使用微软Word自动拼写检

2、查中的红色弯曲下划线)。匈牙利命名法过分强调类型,在泛型方法中就显得格格不入。另外,很多时候我们关心的只是这个变量所代表的意义而不是它的类型。像C+0x的auto关键字(虽然这个关键字在C+98中就存在,但没法用)和C#的var关键字也说明了这一点。在小函数或者Lambda表达式这种比较简单的流程的时候,过长的匈牙利变量显得也很不合适。其实主要的还是程序员懒惰心理作怪,但正是这种懒惰推动了计算机行业的不断发展。就连微软也逐步减少了匈牙利命名法的使用,在其当家语言C#中主要使用的是帕斯卡命名法和骆驼命名法。下面就简单的介绍一下常用的C#命名规范。C#编程命名规范类classPascal方法fun

3、ctionPascal接口interfacePascal总是以 I 前缀开始,后接Pascal命名枚举类型enumPascal委托delegatePascal 具体如下:1. 用camel规则来命名局部变量和方法的参数,用pascal规则来命名方法和类型。publicclassTextBoxpublicvoidDataBind()stringuserName;publicAddUser(stringuserId,byte password);2. 接口的名称加前缀 I.interfaceICompareintCompare();3. 自定义的属性以Attribute结尾publicclassA

4、uthorAttribute:Attribute4. 自定义的异常以Exception结尾publicclassAppException:Exception5. 方法的命名。一般将其命名为动宾短语。ShowDialog()CreateFile()GetPath()6. 代码的缩进。要用Tab,而不要用space.7. 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。8. 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。9. 用有意义的名字命名namespace,如:产品名、公司名。10. 生成和构建一个长的字符串时,一定要使用Stri

5、ngBuilder,而不用string.11. 始终使用 包含if下的语句,即使只有一条语句。12. 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region#endregion,需要记住的一点是:编程规范的目的是帮助程序员写出简洁规范易读的程序,但也没必要过分被其所约束。 (原文: * Another Good article On This Topic*1、命名约定Pascal和Camel命名约定编程的命名方式主要有Pascal和Camel两种(Pascal:每个单词的首字母大写,例如ProductType;Camel:首个单词的首字母小写,其余单词的首字母大写,

6、例如productType)以下是一些常用的C#成员及其推荐命名方法:标志符规则实例与描述类classPascalApplication枚举类型enumPascal记住,是以Pascal命名,切勿包含Enum,否则FXCop会抛出Issue委托delegatePascal以Pascal命名,不以任何特殊字符串区别于类名、函数名常量const全部大写全部大写,单词间以下划线隔开接口interfacePascalIDisposable 注:总是以 I 前缀开始,后接Pascal命名方法functionPascalToString命名空间namespacePascal以.分隔,当每一个限定词均为Pa

7、scal命名方式,比如:using ExcelQuicker.Framework参数Camel首字母小写局部变量Camel也可以加入类型标识符,比如对于System.String类型,声明变量是以str开头,string strSQL = string.Empty;数据成员Camel以m开头Pascal命名规则,如mProductType(m意味member)属性Pascal1.1、局部变量命名在primitive的局部变量命名时,使用Camel命名规则,比如:int type = 0;double count = 0;对于string类型定义,通常使用str前缀Pascal命名的方式,比如s

8、tring strSql = ; /这是一种典型的命名SQL语句字符串的方式。而对于此外的类型对象定义,通常的做法是使用obj前缀Pascal命名的方式,来告知我们这个变量是一个对象。或者也可以直接使用类名的Camel命名规则。比如:Application objApplication = new Application(); Application application = new Application();1.2、参数命名Camel命名规则,首字母小写1.3、类数据成员/属性命名数据成员命名以Camel命名方式,而属性以Pascal命名。通常如果数据成员与属性成对的话,数据成员与属性的

9、命名区别仅在于变量名的第一个字母是小写还是大写。比如class Appcalition private ArrayList worksheetCollection = new ArrayList(); public ArrayList WorksheetCollection get return this.worksheetCollection; 另外,类的成员数据/方法调用时,应该加上this限定符,this在编辑环境中是蓝色的,更利于我们区分局部变量、参数或静态变量,并且利于FXCop检测区分。(如果使用FxCop扫描和检测代码的话)1.4、命名空间命名在dot之间的各限定字符串符合Pas

10、cal格式1.5、委托缩写委托的命名方式我常常以Pascal命名,并且在命名的后面加EventHandler比如public delegate void MouseEventHandler (object sender, MouseEventArgs e); /用于处理与鼠标相关的事件或委托对于自定义的委托,其参数第一个建议仍然使用object sender,sender代表触发这个时间或委托的源对象。而第二个参数继承于EventArgs类,并且在派生类中实现自己的业务逻辑。1.6、自定义异常类自定义异常类以Exception结尾,并且在类名中能清楚的描述出该异常的原因。比如NotFoundF

11、ileException,描述出了某个实体(文件、内存区域等)无法被找到。1.7、枚举枚举的命名是Pascal命名,不需要在枚举中加入Enum,枚举的名称能清楚的表明该枚举的用途。1.8、常量命名全部大写,单词间并且以下划线间隔,如public const int LOCK_SECONDS = 3000; 虽然在MSDN中常量的命名推荐使用Pascal,但是从C+沿袭的命名规则来看,将常量全部大写更加能清楚的表示常量与普通变量之间的区别。1.9、命名缩写在一般情况下,不推荐缩写命名,不要担心变量命名长,长的变量名能使变量的意义更加清晰,其实从长变量名的负面作用三,因为Ctrl+C和Ctrl+V

12、加上在VS中的智能感知,其负面追用已经很小。变量命名的原则是,尽最大努力让其他人在看到我们的变量/函数/等的第一时间,大概能猜出它是做什么的。比如:int productTypeCount = 0; /我们在第一时间就能知道它是记录产品的数量的变量而对于糟糕的命名方式:int prodTypeCount = 0; /它是productTypeCount的简写,我们一部分人也许知道prod是product的缩写,但是每人能保证所有的人都知道它。我个人认为:最优秀的代码它本身就是注释。作为一流的程序员。并不仅仅实现功能,而是要让我们的代码更加优美,具备让他人维护或今后扩充的能力。作为现在的业务系统

13、,其门槛的准入水平已大大降低,实现功能上的需求已没有什么难度,但是高手和菜鸟的区别在于,高手的代码通俗易懂,在整个编码的过程中,不仅能考虑到性能、还会考虑代码可读性和维护性。1.10、数据库命名数据库的字段、表名的命名都推荐采用Pascal命名方式,尽量不采用缩写。当然,使用长的字段名、表名,可能会使SQL语句的编写带来负面影响。我推荐大家可以使用一些ORM,ORM的性能肯定不会比直接写SQL的好,但是如果做业务系统,更重要的是系统多久能交付用户使用,ORM不仅使开发时间可以缩短不少,并且在后期的维护上也比直接写SQL便利很多。2、注释规范2.1、文件头部注释在代码文件的头部进行注释,这样做的

14、好处在于,我们能对代码文件做变更跟踪。在代码头部分标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的开发和修改。2.2、函数、属性、类等注释请使用/三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释都建议以这样命名方法。例如:/ / 用于从ERP系统中捞出产品信

15、息的类/ class ProductTypeCollector 2.3、逻辑点注释在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考耀修改的是注释还是程序了3、排版我的排版原则与建议:1、 每行语句至少占一行,如果语句过长(超过一屏),则该语句断为两行显示;2、 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region#endregion,我最喜欢把机器生成的代码都放在一个#regi

16、on里面,比如在编写ASP.NET程序时,对应自动产生的控件定义,我常用#region Automatic Generated Web Components #endregion把他们框住3、 使用空格,(1) 双目操作符的前后加空格(+, =, & 等),index = index + 1;(2) 单目操作符前加空格(!, +, 等), index +;(3) 逗号、分号只在后面加空格4、 使用空行,在一段功能代码、或者函数、属性之间插入空行,这样会很直观。在Visual Studio 2005中,其实已经带有代码格式化这样的功能,快捷键是Ctrl+K - Ctrl+D。4、界面控件命名我的

17、建议是使用默认控件名作为前缀,前缀名称全部小写,这样的好处是不必为未知的控件统一命名方式发愁,比如对于Label标签控件,有的人用缩写lbl,有的人用lab,有的人用lb。这样其实仍然是避免使用缩写,有的时候仍然会使命名变得冗长,但是命名更加能反应出变量的意义,并且各个开发人员也能更好的执行,因为他们不需要去背记各个变量的缩写。protected System.Web.UI.WebControls.Button buttonQuery;protected System.Web.UI.WebControls.DropDownList dropdownlistProductType;protect

18、ed System.Web.UI.WebControls.TextBox textboxManufactureDate;5、代码可读性一些建议(1)注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰(2)避免使用不易理解的数字,用有意义的标识来替代(枚举和常量)比如:if(productType = 0) else if (productType = 1) (不推荐使用)if(productType = ProductType.CD) else if (productType = ProductType.DVD) (推荐使用)(3)在界面层中尽量使用异常处理try语句,不要将系统级别的错误直接暴露给用户,而更应该的是把系统抛出的错误信息记录到LOG日志文件中去,告诉用户友好的提示信息

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!