c#的命名规范_第1页
c#的命名规范_第2页
c#的命名规范_第3页
c#的命名规范_第4页
c#的命名规范_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#的命名规范 1、命名约定 Pascal 和 Camel 命名约定 编程的命名方式主要有 Pascal 和 Camel 两种(Pascal:每个单词的首字母大写,例如 ProductType;Camel:首个单词的首字母小写,其余单词的首字母大写,例如 productType) 以下是一些常用的 C#成员及其推荐命名方法: 标志符 规则 实例与描述 类 class Pascal Application 枚举类型 enum Pascal 记住,是以 Pascal 命名,切勿包含 Enum,否则 FXCop 会 抛出 Issue 委托 delegate Pascal 以 Pascal 命名,不以任何特殊字符串区别于类名、函数名 常量 const 全部大写 全部大写,单词间以下划线隔开 接口 interface Pascal IDisposable 注:总是以 I 前缀开始,后接 Pascal 命名 方法 function Pascal ToString 命名空间 namespace Pascal 以.分隔,当每一个限定词均为 Pascal 命名方式,比如: using ExcelQuicker.Framework 参数 Camel 首字母小写 局部变量 Camel 也可以加入类型标识符,比如对于 System.String 类型,声 明变量是以 str 开头,string strSQL = string.Empty; 数据成员 Camel 以 m 开头Pascal 命名规则,如 mProductType(m 意味 member) 属性 Pascal 1.1、局部变量命名在 primitive 的局部变量命名时,使用 Camel 命名规则, 比如:int type = 0; double count = 0; 对于 string 类型定义,通常使用 str 前缀Pascal 命名的方式, 比如 string strSql = “; /这是一种典型的命名 SQL 语句字符串的方式。 而对于此外的类型对象定义,通常的做法是使用 obj 前缀 Pascal 命名的方式,来告知我 们这个变量是一个对象。或者也可以直接使用类名的 Camel 命名规则。 比如:Application objApplication = new Application(); Application application = new Application(); 1.2、参数命名 Camel 命名规则,首字母小写 1.3、类数据成员/属性命名,数据成员命名以 Camel 命名方式,而属性以 Pascal 命名。通 常如果数据成员与属性成对的话,数据成员与属性的命名区别仅在于变量名的第一个字母 是小写还是大写。 比如 class Appcalition private ArrayList worksheetCollection = new ArrayList(); public ArrayList WorksheetCollection get return this.worksheetCollection; 另外,类的成员数据/方法调用时,应该加上 this 限定符, this 在编辑环境中是蓝色的,更 利于我们区分局部变量、参数或静态变量,并且利于 FXCop 检测区分。 (如果使用 FxCop 扫 描和检测代码的话) 1.4、命名空间命名在 dot 之间的各限定字符串符合 Pascal 格式 1.5、委托缩写委托的命名方式我常常以 Pascal 命名,并且在命名的后面加 EventHandler 比如 public delegate void MouseEventHandler (object sender, MouseEventArgs e); /用于 处理与鼠标相关的事件或委托 对于自定义的委托,其参数第一个建议仍然使用 object sender,sender 代表触发这个时间 或委托的源对象。而第二个参数继承于 EventArgs 类,并且在派生类中实现自己的业务逻 辑。 1.6、自定义异常类自定义异常类以 Exception 结尾,并且在类名中能清楚的描述出该异常 的原因。比如 NotFoundFileException,描述出了某个实体(文件、内存区域等)无法被找 到。 1.7、枚举枚举的命名是 Pascal 命名,不需要在枚举中加入 Enum,枚举的名称能清楚的表 明该枚举的用途。 1.8、 常量命名全部大写,单词间并且以下划线间隔,如 public const int LOCK_SECONDS = 3000; 虽然在 MSDN 中常量的命名推荐使用 Pascal,但是从 C+沿袭的命名规则来看,将常 量全部大写更加能清楚的表示常量与普通变量之间的区别。 1.9、 命名缩写在一般情况下,不推荐缩写命名,不要担心变量命名长,长的变量名能使变 量的意义更加清晰,其实从长变量名的负面作用三,因为 Ctrl+C 和 Ctrl+V 加上在 VS 中的智 能感知,其负面追用已经很小。变量命名的原则是,尽最大努力让其他人在看到我们的变 量/函数/等的第一时间,大概能猜出它是做什么的。 比如:int productTypeCount = 0; /我们在第一时间就能知道它是记录产品的数量的变量 而对于糟糕的命名方式:int prodTypeCount = 0; /它是 productTypeCount 的简写,我们一部 分人也许知道 prod 是 product 的缩写,但是每人能保证所有的人都知道它。我个人认为: 最优秀的代码它本身就是注释。作为一流的程序员。并不仅仅实现功能,而是要让我们的 代码更加优美,具备让他人维护或今后扩充的能力。作为现在的业务系统,其门槛的准入 水平已大大降低,实现功能上的需求已没有什么难度,但是高手和菜鸟的区别在于,高手 的代码通俗易懂,在整个编码的过程中,不仅能考虑到性能、还会考虑代码可读性和维护 性。 1.10、数据库命名数据库的字段、表名的命名都推荐采用 Pascal 命名方式,尽量不采用缩 写。当然,使用长的字段名、表名,可能会使 SQL 语句的编写带来负面影响。我推荐大家 可以使用一些 ORM,ORM 的性能肯定不会比直接写 SQL 的好,但是如果做业务系统,更 重要的是系统多久能交付用户使用,ORM 不仅使开发时间可以缩短不少,并且在后期的维 护上也比直接写 SQL 便利很多。 引用回复 IT 小白 1 楼 圈副 圈积分:114 发短消息 去家园 加好友 博客 RE:C#的命名规范 2009-03-18 15:19:20 2、注释规范 2.1、文件头部注释在代码文件的头部进行注释,这样做的好处在于,我们能 对代码文件做变更跟踪。在代码头部分标注出创始人、创始时间、修改人、修改时间、代 码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在 第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少 个程序员的开发和修改。 样本: /* * * 作者: Eunge * 创始时间: 2004-6-8 * 修改人:Lucy * 修改时间:2004-12-9 * 修改人:Lucy * 修改时间:2005-01-29 * 描述: * 主要用于产品信息的资料录入, * */ 2.2、函数、属性、类等注释 请使用/三斜线注释,这种注释是基于 XML 的,不仅能导出 XML 制作帮助文档,而且在 各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以 protected,protected Internal,public 声明的定义注释都建议以这样命名方法。 例如: / / 用于从 ERP 系统中捞出产品信息的类 / class ProductTypeCollector 2.3、逻辑点注释在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的, 以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除 BUG。 在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则 我们应该仔细思考耀修改的是注释还是程序了 引用回复 IT 小白 2 楼 圈副 圈积分:114 发短消息 去家园 加好友 博客 RE:C#的命名规范 2009-03-18 15:19:31 3、排版我的排版原则与建议: 1、 每行语句至少占一行,如果语句过长(超过一屏) ,则该语句断为两行显示; 2、 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用 #region#endregion,我最喜欢把机器生成的代码都放在一个#region 里面,比如在编写 ASP.NET 程序时,对应自动产生的控件定义,我常用#region Automatic Generated Web Components #endregion 把他们框住 3、 使用空格, (1 ) 双目操作符的前后加空格 (+, =, (2 ) 单目操作符前加空格 (!, +, 等), index +; (3 ) 逗号、分号只在后面加空格 4、 使用空行,在一段功能代码、或者函数、属性之间插入空行,这样会很直观。 在 Visual Studio 2005 中,其实已经带有代码格式化这样的功能,快捷键是 Ctrl+K - Ctrl+D。 4、界面控件命名我的建议是使用默认控件名作为前缀,前缀名称全部小写,这样的好处是 不必为未知的控件统一命名方式发愁,比如对于 Label 标签控件,有的人用缩写 lbl,有的 人用 lab,有的人用 lb。这样其实仍然是避免使用缩写,有的时候仍然会使命名变得冗长, 但是命名更加能反应出变量的意义,并且各个开发人员也能更好的执行,因为他们不需要 去背记各个变量的缩写。 protected System.Web.UI.WebControls.Button buttonQuery; protected System.Web.UI.WebControls.DropDownList dropdownlistProductType; protected 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 日志文件中去,告诉用户友好的提示信息 在 Visual Studio 2005 里面,有代码布局格式化功能,蛮有用的。其实代码的规范是为了使 系统具有整体一致的编码风格,以使后期维护人员能更快的读懂代码并进行维护。我认为 代码规范有其必要性,但不能因为规范而规范,从开发而言,开发是为了更快的做出稳定 的系统,而稳定的系统是为了给公司带来受益。开发人员、项目管理人员都应该更多的从 项目经营的角度出来,同时站在公司、客户的角度考虑问题,而不是因为代码而代码。 C#开发编码规范 1.命名 1.1 类变量命名:类变量命名一律用下划线开头,多个单词组成,第一个字母小写的,其他 单词第一个字母大写。 public class C /变量类例子 private int _intSample; 1.2 类命名:类命名一律由大写字母开头的各个单词组成。 / /类命名例子 / public class ClassSample / 1.3 局部变量命名:由小写字母开头,其他单词开头字母大写的各单词组成。 /局部变量例子 int intLocalVar; 1.4 函数命名:由小写字母开头,其他各大写开头的各单词组成。 / /函数命名例子 / public void getValue(int type) 1.5 枚举类型命名:一律由大写字母”E”开头,第一个字母大写的各个单词组成 public enum ESample EMPTY, A, B 并确保,枚举类型中有个约定的 EMPTY 元素. 1.6 接口类型命名:一律由大写字母”I”开头,第一个字母大写的各单词组成 / /接口样例 / public interface ISample / /获取对象 / object getValue(); 1.7 抽象类的命名:一律由大写字母”A”开头,第一个字母大写的各单词组成 / /抽象类样例 / public abstract class ASample / /获取对象 / public abstract object getValue(); 1.7 数组变量命名:数组变量一律用”arr”开头的变量. /数组对象 protected object arrSample; 1.8 函数参数命名:和局部变量命名一致,参见 1.3 1.9 常数命名:常数命名要所有字母都要大写,并且单词之间用”_”连接,而第一个单词是常 量的类型名称或者类型名称的缩写. /整数常量样例 public const int INT_SAMPLE = 0; /字符串型常量 public const string STR_SAMPLE = “sample”; 1.10 静态变量命名: 静态变量需要以”S_”开头, 后跟局部变量命名的方法构成的变量名称: /静态变量样例 public static int S_intSample; 1.11 名空间命名: 名空间命名需要和工程文件夹一一对应,并且根空间保持为 OKShare, 而文件夹的命名规范和类命名规范保持一致. 项目 OKSample 下面的 Sample 文件夹中有一个接口为 ISample,它的名空间应为 OKShare.OKSample.Sample 2.注释。 2.1 文件注释:建立一个文件的时候,需要在文件开始部分注明:文件的建立者,建立时间, 以及该文件的意义,用途。 FileSample.cs: /* * * Created By Shawn At 2005-12-04 * 该文件包含实现 的类,用来完成 * */ 2.2 类变量注释:类变量注释,需要为每一个设立的类变量指明该变量的意义,用途,用 “/”在变量的上一行指明,和变量左对齐。 例子,参见 1.1。 2.3 类注释和函数注释,类注释和函数注释按照 Visual Studio 的注释风格进行,在类或函数 定义的上一行,用 / / 注释 / 表示,VS 支持自动生成这些注释行。例子,参见 1.2(类注释)和 1.4(函数注释) 2.4 缩进:每一个层次之间都需要有一个 Tab 键的缩进.如名空间定义和类定义之间,类定义和 类元素定义之间. namespace OKShare.OKSample.Sample public class C 3.初始化 3.1 类变量的初始化:除非静态变量,否则不要在定义的时候进行赋值初始化,而需要在构造函 数的时候进行统一初始化函数 init().要求每一个编写的类都需要有 init()函数,除非该类只提 供一些静态的 Utility 操作. 不要: public class C /静态类变量样例 public static string S_strSample = “I am static string”; /变量类例子 private int _intSample = 0; 而要: public class C /类变量例子 private int _intSample; /静态变量 public static int S_intSample = 0; / /构造函数 / public C() this.init(); / /初始化类方法 / protected void init() this._intSample = 0; / /样例 / protected void dummy() int a = 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 的使用地方 string strSample = String.Empty; /注意 int 和 Int32 的使用地方 int intSample = 0; System.Int32.Equals(intSample,3); 4.4 引用类型转换:我们不要使用类型加在前面的转换方式,而使用 as,这样当转换不成功时, 也不会有异常,但可以根据转换结果进行判断. object obj; 不要: ISample sam = (ISample)obj; 而要: ISample sam = obj as ISample; if(null = sam) /转换失败 5.DotNet 编程提醒 5.1.循环语句 对一个容器进行循环,如果该容器已经实现了

温馨提示

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

评论

0/150

提交评论