版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编码及命名规范整理人:陈春祥日 期:2011-01-04适用范围本文档适用人员范围:开发人员。本文档适用开发范围:C#开发、JAVA开发。注:本文档为使用进行开发的程序员提供编码规范的指导,其提供的一些编码通用规则也可以供使用其他语言编程的开发者参考。第一部分 命名规范1.大写样式1.1 首字母大写样式每个单词开头的字母大写(如TestCounter).1.2 首字母小写样式除了第一个单词外的其他单词的开头字母大写. 如. testCounter.1.2 全字母大写样式全部单词都大写,单词间以“_”符号隔开。尽量少用缩写命名. 如. TEST_COUNTER.2.命名指导2.1 名称
2、所有命名都应该尽可能使用完整的词,例如 SpellCheck。缩写词可能有许多种形式,因此可能产生混淆。请注意:缩写词可能很难理解。如果整个单词太长,则使用完整的第一音节或经过仔细选择的缩写词。2.2 区分大小写为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则:1.不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。2.不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。
3、60; namespace ee.cummings; namespace Ee.Cummings;3.不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。 void MyFu
4、nction(string a, string A)4.不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Point p 和 POINT p 是不适当的类型名称,原因是它们仅在大小写方面有区别。 System.Windows.Forms.Point p System.Windows.Forms.POINT p5.不要创建具有仅是大小写有区别的属性名称的类型。在下面
5、的示例中,int Color 和 int COLOR 是不适当的属性名称,原因是它们仅在大小写方面有区别。 int Color get, set int COLOR get, set6.不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate 和 Calculate 是不适当的方法名称,原因是它们仅在大小写方面有区别。
6、 void calculate() void Calculate()2.3 缩写为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:1.不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。 2.不要使用计算机领域中未被普遍接受的缩写。3.在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface
7、的缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。4.不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用首字母大写样式,虽然这和单词的标准缩写相冲突。 2.4 命名指导1.类名应该为名词及名词短语,尽可能使用完整的词.2.使用首字母大写样式3.不要使用类前缀4.在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种
8、Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。 2.5 接口命名规则1.接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)2.使用首字母大写样式3.使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)2.6 枚举命名规则1.对于 Enum 类型和值名称使用全字母大写样式。2.少用缩写。 3.不要在 Enum类型名称
9、上使用 Enum 后缀。 2.7只读及常量变量命名1.静态常量使用名词及名词短语2.使用全字母大写样式2.8参数及非常量变量命名1.使用描述性的命名,名称应该明确表达参数的意义及类型,优先满足参数的意义描述 2.使用首字母小写样式3.对类内的成员变量或静态变量不使用前缀。 公有成员使用首字母大写样式 私有成员使用首字母小写样式 内部成员使用首字母小写样式 静态变量使用全字母大写样式4.UI类的变量命名使用如下规则TextBox类:前缀txt+名称(首字母小写),如:txtCustomerName;Label类:前缀lbl+名称(首字母小写),如:lblCustomerName;Select类:
10、前缀sel+名称(首字母小写),如:selCustomerType;Radio类:前缀rdo+名称(首字母小写),如:rdoSubscribe;CheckBox类:前缀chk+名称(首字母小写),如:chkTVDataGrid类:前缀grd+名称(首字母小写),如grdCustomerListButton类:前缀btn+名称(首字母小写),如:btnSubmitForm类:前缀form+名称(Pascal规则),如:formLogin2.9 变量命名1.在简单的循环语句中计数器变量使用i, j, k, l, m, 2.使用首字母小写样式 2.11 属性命名1.名称应该为名词
11、及名词短语2.使用首字母大写样式3.对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag2.10 方法命名1.使用首字母大写样式2.对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。3.推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave 4.不要在
12、方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。 2.12 集合命名1.名称应该为名词及名词短语2.使用首字母大写样式3.名称后面追加“Collection”2.13 事件命名1.event handlers命名使用EventHandler 后缀.2.两个参数分别使用sender 及e3.使用首字母大写样式4.事件参数使用EventArgs 后缀5.事件命名使用语法时态反映其激发的状态,例如 Changed,Changing5.考虑使用动词命名.2.14实体命名1.实体名称
13、使用全字母大写样式命名.2.实体成员名称要加前缀,例如int前缀是n,string前缀是ch。使用首字母大写样式如:public struct DEVICE_ROUTE_INFO /设备ID public int nDeviceID; /接口ID public int nInterfaceID; /端口索引 public int nInterfaceIndex;2.15 项目名称1、项目名称前缀要统一。例如所有备案系统的程序都用PRM做前缀,则以后增加任何程序代码,都需要以PRM这个作为前缀做项目的名称。2、项目名称必须使用英文描述,要求英文字母不超过12个字母,并且使用英文单词不可
14、超过2个单词。还要要求命名词要达意,一目了然。如果名称使用英文单词太多则可以把前面几个单词简写,即使用单词首个字母即可。但是必须达到词要达意的原则。2.16 命名空间写代码定义的任何类,都必须包含在指定的命名空间内。根据不同类属性可以设置不同的命名空间。命名空间定义格式:公司名(英文).项目名前缀.项目名称.属性名称(自定义),使用首字母大写样式。例如:我们把所有数据模型定义的类都放在这个命名空间下:Sivan.PRM.Data.Model其中:Sivan-公司英文名
15、; PRM-项目名前缀 Data-项目名称 Model-属性名称2.17大小写规范总结 标识符大小写示例类/结构首字母大写样式AppDomain枚举类型首字母大写样式ErrorLevel枚举值首字母大写样式FatalError事件首字母大写样式ValueChange异常类首字母大写样式WebException 注意
16、160; 总是以 Exception 后缀结尾。只读的静态字段首字母大写样式RedValue接口首字母大写样式IDisposable 注意 总是以 I 前缀开始。集合首字母大写样式CustomerCollection注意 总是以Collection结束方法首字母大写样式ToString命名空间首字母大写样式System.Drawing参数首字母小写样式typeName属性首字母大写样式BackColor受保护的实例字段首字母小写样式redValue 注意 很少使用。属性优于使用受保护的实例字段。公共实例字
17、段首字母大写RedValue 注意 很少使用。属性优于使用公共实例字段。 第二部分 编码规范1. 源文件尽量保持类文件的简短,最好不要超过2000行,每个类分别存放在单独的文件中2.目录结构每个命名空间对应一个目录. (例如命名空间GIS.MyMedia.Web.UI对应目录为GIS/MyMedia/Web/UI,这样可以方便的根据命名空间找到其相应的目录。3.排版3.1 换行当代码一行写不下时,参考如下规则换行:1.在逗号后面换行.2.在操作符后面换行.3.对于表达式选用高级别处换行,而不要在低级别处换行4.新行表达式应该与上一
18、行同一级别的该表达式对齐方法调用换行示例:longMethodCall(expr1, expr2,expr3, expr4, expr5);算术表达式换行示例:最佳风格:Var = a * b / (c - g + f) +4 * z;不良风格:var = a * b / (c - g +f) + 4 * z;第一个编码为最佳风格,因为其在括号外换行,使用了高级别处换行的规则. 注意在排版时,整个表达式前面的空白使用Tab,表达式内部的空白使用空格> var = a * b / (c - g + f) +> .4 * z;'>' 代表 tab ,
19、'.' 代表空格.3.2空白使用Tab键而不要使用空格来作为排版的缩进字符,使用Tab有如下好处:.Tab键只有一个字符,减少击键次数。.如果你想增加或者减少缩排的空间,可以选定需要缩排的代码块,然后使用Tab增加缩排空间,使用Shift-Tab减少缩排空间.注释4.1块注释尽量避免使用大块注释. 对于代码描述使用C#推荐的/描述格式.如果你想使用块注释建议使用如下风格: /* Line 1* Line 2* Line 3*/这种注释风格在视觉上和代码区分开来在注释后应该紧跟一个空白行。4.单行注释使用/作为单行注释一般注释的文本长度最好不要超过代码的长度,如果一行代码需要很多
20、的文本来解释,往往说明该代码过于复杂而可能存在Bug。4.3 注释文档.net支持注释文档,通过在编译选项中指定XML的文件名称,可以让VS.net自动生成注释文档.这些注释都是包含特定的XML标签。单行注释风格如下,例如:/ <summary>/ This class./ </summary>多行注释风格如下:/ <exception cref=”BogusException”>/ This exception gets thrown as soon as a/ Bogus flag gets set./ </exception>所有
21、的xml注释必须以三个/开头。Ndoc或者类似工具可以根据该注释文档生成.chm的帮助文件.定义5.1 每行定义数一个声明对应于一行,这样可以方便注释,int level; / indentation levelint size; / size of table定义的命名必须清晰的代表该变量的含义,命名规则参见本文件命名规范5.2 初始化尽量在定义时初始化,如下:string name = myObject.Name;int val = time.Hours;5.3 类及接口的定义编写类及接口时,遵循如下规则:不要在方法名称及圆括号间使用空格大括号“”应该出现在定
22、义的下一行,“”及“”单独占一行 .语句6.1 简单语句每行应该仅包含一个语句.6.2 返回值语句返回语句不要使用最外面的圆括号错误: return (n * (n + 1) / 2);正确: return n * (n + 1) / 2;6.3 If, if-else, if else-if else 语句if, if-else ,if else-if else 语句应该按照如下示例使用:if (condition) DoSomething();. if (condition) DoSomething();.else DoSomethingOther();. if (condition) DoSomething();. else if (condition) DoSomethingOther();.else DoSomethingOtherAgain();.6.4 For / Foreach 语句使用for 语句的格式 :for (int i = 0; i < 5; +i).空白的for语句:for (initialization; condition; update);foreach 使用格式 :foreach (int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论