您好,欢迎访问三七文档
.NET代码规范学习下边我谈谈.NET代码规范的学习:一、注释规范1,自建代码文件注释:对于自己创建的代码文件(如函数、脚本),在文件开头,一般编写如下注释:/*************************************************作者:小组:说明:创建日期:版本号:**********************************************/2,标准注释:在模块、类、属性、方法前一行添加注释,以便调用的时候提示用户下以方法声明做例子:///summary///depiction:对该方法的说明////summary///paramname=参数名称参数说明/param///returns///对方法返回值的说明,该说明必须明确说明返回的值代表什么含义////returns如果模块只进行部分少量代码的修改时,则每次修改须添加以下注释:///修改人:///修改日期:YYYY-MM-DD///备份:/*原代码内容*/将原代码内容注释掉,然后添加新代码使用以下注释:///添加人:///添加日期:YYYY-MM-DD代码内容///结束:对于重构的类文件,需要对原来的类文件做备份,然后放在同级目录下,在原有文件名后面添加后缀"_BAK",以便日后版本升级时整理源码。3.代码中的注释:代码间注释分为单行注释和多行注释:单行注释://单行注释多行注释:/*多行注释1多行注释2多行注释3*/代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法、循环条件、不同分支的意义等等)。这是添加注释的学习,添加适当的注释,会使你的代码就像课文一样容易读懂。下边看第二部分。二,命名规范:总体来说需要做到这几点:a,名字应该能够标识事物的特性,并且与业务挂钩。b,名字一律使用英文单词,而不能为拼音。c,名字可以有两个或三个单词组成,但不应多于4个,控制在3至30个字母以内。d,在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUser。在具体任务开发中,如果有特定的命名约定,则在相应的软件开发计划中予以明确定义及上报质量管理部审计组。分点来说具体的:1,命名概括:Pascal命名法:所有单词的首字母都大写,其他字母小写Camel命名法:除首字母外,其他单词的首字母大写,其他字母小写o在类属性的名称中包含类名是多余的,如Book.BookTitle。而是应该使用Book.Title。o在变量名中使用互补对,如min/max、begin/end和open/close。o布尔变量名应该包含Is,这意味着Yes/No或True/False值,如fileIsFound。o即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如i或j。文件名要和类名相同,一般情况下一个类一个文件,文件名遵从Pascal命名法,无特殊情况,扩展名小写,使用统一而又通用的文件扩展名:C#类.cs。2,缩写:为了避免混淆和保证跨语言交互操作:o不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用GetWindow,而不要使用GetWin。o不要使用计算机领域中未被普遍接受的缩写。o在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用UI作为UserInterface缩写,用OLAP作为On-lineAnalyticalProcessing的缩写。o在使用缩写时,对于超过两个字符长度的缩写请使用Pascal大小写或Camel大小写。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是System.Io。o对于某些名字中单词都比较长的情况,可以自行写一个缩写名字(名字中的关键字不能缩写),将所有的缩写做一个说明文件,放在同级目录下的开头。3,命名空间:o命名命名空间时的一般性规则是使用公司名称,后跟技术名称和可选的功能与设计,如下所示:CompanyName.TechnologyName[.Feature][.Design]o命名空间使用Pascal大小写,用逗号分隔开。oTechnologyName指的是该项目的英文缩写,或软件名。o命名空间和类不能使用同样的名字4,类o使用Pascal大小写。o使用全称避免缩写,除非缩写已是一种公认的约定,如URL、HTML。对于某个命名空间、文件夹下类名中单词都比较长的情况,可以缩写(名字中的关键字不能缩写,其他单词只取首字母),将所有的缩写做一个说明文件,放在同级目录下的开头。o不使用下划线(_)。o类的命名要见名知意。o数据访问层:类名后加DAL(DataAccessLayer)。注意:在.NET中没有DAO的概念,DAO是在Java中出现的,表示一种数据访问方式。o业务逻辑层:类名后加BLL(BusinessLogicLayer),如果类名特长可以使用缩写,但在文档中要注明。缩写的全称和意义。o界面层:asp中针对页面的类,不用添加UI前缀或后缀。o实体层:实体类后加Entity做结尾,如果其他方法中,调用实体类作为参数,参数前面加小写en,如果参数过长,使用缩写,但在文档中也要注明。o如果系统规模比较大,应该考虑,对类进行分组放到不同的文件夹中,便于维护,把握粒度。5,接口:o使用Pascal大小写。o在原有类名基础上加“I”,如:IUserDaoo不使用下划线(_)。o当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。两个名称的不同之处只是接口名前有一个I前缀。或者在实现类名后加“Impl”后缀。publicinterfaceIComponent{}publicclassComponent:IComponent{}publicclassComponentImpl:IComponent{}6,枚举(Enum)o对于Enum类型和值名称使用Pascal大小写。o命名不能缩写,枚举内的内容可以缩写。o命名禁止加Enum后缀。7,参数o参数名称使用Camel大小写o参数名称可缩写8,方法o以动词开头。o使用Pascal大小写。o禁止缩写,除非名词本身含有缩写。如:AddStudentMgr()9.属性(property)o以名词或形容词命名。o使用Pascal大小写。o禁止缩写。10,委托o以名词或形容词命名。o使用Pascal大小写。o禁止缩写。o如果与事件(event)关联,则名称命名使用EventHandler后缀,否则其他名称均以Delegate后缀结尾。如//普通委托定义publicdelegatevoidSetMethodDelegate(stringname);//委托与事件关联publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);11,事件o使用Pascal大小写。o禁止缩写。o名称命名使用Event后缀。o用动词或名词命名,带有时间意义,如:MouseMove事件、Closing事件、Closed事件。o指定两个名为sender和e的参数。sender参数表示引发事件的对象。e为事件类的实例。e参数类型使用适当而特定的事件类。o用EventArgs后缀命名事件参数类。示例:publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);publiceventMouseEventHandlerMouseEvent;//事件定义12,常量(const)o全部大写,单词间以“_”分隔。o禁止缩写。o13,字段oprivate、protected使用Camel大小写。o禁止使用public。14,静态字段o使用名词、名词短语或者名词的缩写命名静态字段。o使用Pascal大小写。15,集合o命名使用复数。16,范型o以一个大写字母(建议优先使用T)表示类的类型,以一个小写字母(如:t)表示类名。三,编码规则a.大括号规则o书写规则:if(expression)(推荐){}或:if(expression){}b.缩进规则使用一个“Tab”为每层次缩进(默认4个空格,有的规范也要求2个空格,依要求而定,所有IDE都可以设置)。c.小括号规则o不要把小括号和关键词(if、while等)紧贴在一起,要用空格隔开它们。如:if(true){}o不要把小括号和函数名紧贴在一起。o除非必要,不要在Return返回语句中使用小括号。因为关键字不是函数,如果小括号紧贴着函数名和关键字,二者很容易被看成是一体的。d.单语句规则除非这些语句有很密切的联系,否则每行只写一个语句。e.模块化规则某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用函数。并向小组成员发布。同时要尽可能利用其它人的现成模块。f.函数复杂度规则单个函数的功能不能过于复杂,不能超过以下限定:o单一功能子函数代码不得超过50行、形参个数不得超过7个、程序嵌套深度不得超过7层。o圈复杂度必须在15以内,对程序的修改或扩展不得增加其原有圈复杂度。g.编码风格规则编码过程中需遵循以下风格习惯:o代码未写,文档先行,注释必须按照固定统一范式撰写。o关系运算必须常量在左、变量在右。o不许使用复杂的运算表达式,必要时添加括号而不依赖于优先级。o魔鬼数字需用宏定义替代。o局部变量必须初定义、避免不必要的内存操作、内存操作必须考虑异常处理。h.版本管理规则本项目中,每个任务在完成一个稳定的版本后,都应打包并且归档。源码包的版本号由圆点隔开的两个数字组成,第一个数字表示发行号,第二个数字表示该版的修改号。具体用法如下:o当源码包初版时,版本号为V1.00;o当源码包被局部修改或bug修正时,发行号不变,修改号第二个数字增1。例如,对初版源码包作了第一次修订,则版本号为V1.01;o当源码包在原有的基础上增加部分功能,发行号不变,修改号第一个数字增1,例如,对V1.12版的基础上增加部分功能,则新版本号为V1.20;o当源码包有重要修改或局部修订累积较多导致源码包发生全局变化时,发行号增1。例如,在V1.15版的基础上作了一次全面修改,则新版本号为V2.00。四,数据库命名规则a.数据库名数据库名采用首字母大写,避免系统保留的表名。如:LibraryMaintainSystemb.数据库表使用T_表名,表名采用首字母大写。如:T_Class如果系统分多个子系统模块,那么将模块的缩写加在T后,用下划线与表名分开。如:基础系统:TB_Class(Basic)评教系统:TA_表名(Assess)考试系统:TE_表名(Exam)选课系统:TC_表名(Choose)关联数据表:TR_表A表B,两个表首字母大写。一对多关系,多在前,一在后。一对一和多对多关系,两个表的先后,以字母排序。如果分模块,那么将模块缩写添加在T后如:TBR_ClassGrade表示基础系统,班级和年级的关系表。c.表字段第一个字母小写,后面的单词或拼音,采用第一个字母大写,命名规则只来自于业务,尽量表达出列的含义。命名一般为名词或形容词。d.视图视图名=V+“_”+名称e.主键主键名=PK+“_”+表名f.外键外键名=FK+“_”+表名g.索引索引名=IDX+“_”+表名+相关字段/索引含义。h.关联关联指数据库表之间的外键关系关联名=RL+“_”+主表名+从表名。i.存储过程存储过程名=PROC+“_”+存储过程含义。j.触发器触发器名=TR+“_”+表名+“_”+触发器类型/自定义名称触发器类型:Insert触发器加_I,Delete触发器加_D,Update触发器加_U,如:TR_Customer_I,TR_Customer_D,TR_Customer_U。最后我们看一下控件名规范:
本文标题:NET代码规范学习
链接地址:https://www.777doc.com/doc-2889565 .html