天强绩效管理系统编程规范一.命名规范1.命名原则a.PascalCasing属性每个单词的第一个字母大写,例如:BackColorb.CamelCasing除了第一个单词以外的每个单词的第一个字母大写,例如:backColor.c.UpperCasing如果缩写字母的个数小于或等于2,那么所有的缩写字母都大写。3个以上的字母缩写采用PascalCasing。例如:System.IO,System.Web.UI,System.CodeDom。2.类的命名a.用PascalCasing命名规则b.谨慎的使用缩写c.不要使用任何的前缀(例如:C_GetList)d.不要使用下划线命名e.已所拥有的功能作为描述命名3.方法的命名a.用PascalCasing命名规则b.谨慎的使用缩写c.用动词或动词短语来命名(例如:publicstringGetAllList(){})Data层的方法统一使用d.不要使用下划线命名4.属性的命名a.用PascalCasing命名规则b.谨慎的使用缩写c.用名词或名词短语来命名d.不要使用下划线命名e.可以考虑用类型名称作为属性名称(例如:publicColorColor{})5.接口的命名a.用PascalCasing命名规则b.谨慎的使用缩写Insert()添加数据Update()修改数据GetModel()获取一条数据GetModelList()获取一个列表Delete()删除数据c.接口的前缀命名统一用I(方法本身的描述中有I开头的除外,例如:IGetPolicy)d.不要使用下划线命名e.接口名字用名词或者名词短语,或形容词来表述接口的行为6.参数的命名a.用CamelCasing命名规则b.谨慎的使用缩写c.由本地的参数类型+描述性单词(例如:objCompanyList,strName,nCode)d.不要使用保留参数(Win32API)e.参数的名字应该是描述性的7.变量的命名a.用CamelCasing命名规则b.避免无意义的变量命名(如:stringa=string.Empty(),但for(inti=0;i5;i++)除外)c.由本地的参数类型+描述性单词(例如:objCompanyList,strName,intCode)d.不要使用保留参数(Win32API)e.参数的名字应该是描述性的8.大小写敏感a.不要出现两个只用大小写区分的命名空间b.不要出现两个只用大小写区分的参数c.不要出现两个只用大小写区分的同一命名空间的类型d.不要出现两个只用大小写区分的同一类型属性e.不要出现两个只用大小写区分的方法9.类库的命名a.要以系统的功能模块来划分类库,所有的类库的命名空间用KPI.开头b.用PascalCasing命名规则c.不要使用下划线命名d.不能使用缩写e.类库分为公共引用层,实体层,逻辑层和数据层类库f.公共引用层命名Commong.实体层命名KPI.Model,例如:KPI.Model.Syetemh.逻辑层命名KPI.Stategy.例如:KPI.Stategy.Systemi.数据层命名KPI.Data.例如:KPI.Data.System10.文件的命名a.用PascalCasing命名规则b.公共引用层文件命名参考类的命名c.Web网站内文件的命名主要遵循PascalCasing命名规则d.实体层文件命名分为数据库实体,自定义实体,条件实体。e.实体层数据库实体文件命名数据库名称+Model结尾命名f.实体层自定义实体文件命名功能描述名词+Define结尾命名g.实体层条件实体功能描述名词+Condition结尾命名h.逻辑层文件命名功能描述名词i.数据层文件命名数据库名称二.编程规范1.代码注释原则上平均每100行代码中要有20~30行注释,视程序复杂程度而定。所有注释应使用中文。例如://添加一个用户函数对于源文件和类,必须在注释中说明修改历史具体规范参见项目根目录下的CodingSample.cs2.类和接口的注释在summary中填写类的简要描述,remarks中填写类的一些注意事项。Histroy填写修改记录。所有类和接口都要注释。类的操作注释由详细设计产物导出,编程人员补充完成从Title到History的部分。例如:///summary///seecref=IUserManager/接口定义了seecref=User/实体类的增、删、改、读///(CRUD)方法,该接口的实现类将负责用户对象的简单管理。////summary///remarks///seecref=IUserManager/接口仅定义seecref=User/实体对象的CRUD操作方法,///并没有定义关联用户对象与群组、组织机构等的操作,这些业务逻辑操作的方法定义在///专门的关联操作接口seecref=IUserGroupAssociator/及seecref=IUserOrgAssociator/中。////remarks///Title:IUserManager///Copyright:*****SoftwareLTD.coCopyright(c)2006///Company:*****有限公司///Designer:***///Coder:姜辉///Reviewer:///Tester:***///Version:1.0///History:///2006-07-14任维[创建]///2006-07-15任维[编码]///2006-08-10任维[修改]根据外部用户需要,包装GetUserNameById()WEB服务方法.3.类成员变量的注释类成员变量的注释如下例所示:///summary///用户的名称////summarypublicstringusername;在声明前,利用.Net的格式来注释,原则上类的成员变量都要注释。4.方法的注释///summary///根据指定的用户登录名、姓名及密码创建(注册)一个新用户(seecref=User/)。////summary///remarks///当满足如下任意情形之一时,创建用户的操作将会失败:///1,指定的用户名在用户持久化存储中已存在///2,指定的用户名不合法(空值,空字符串,多个空格,包含除字母及数字以外的非法字符,长度///超过64)///3,指定的用户密码不合法(空值,空字符串,多个空格,包含除字母及数字以外的非法字符,长///度小于6位或大于位64)///4,指定的用户姓名不合法(空值,空字符串,多个空格,长度大于位64)////remarks///paramname=loginName用户的登录名,该属性必须唯一,如“zhangsan”/param///paramname=username用户的名称,该属性可以重复,如多个用户均可以叫“张三”/param///paramname=password用户登录的密码/param///returns创建的新用户对象(seecref=User/)/returns///exceptioncref=UserAlreadyExistsException用户已经存在时所抛出的异常/exception///exceptioncref=InvalidLoginNameException用户登录名不合法时所抛出的异常/exception///exceptioncref=InvalidUsernameException用户姓名不合法时所抛出的异常/exception///exceptioncref=InvalidPasswordException用户登录密码不合法时所抛出的异常exceptionsummary中填写该方法的主要功能描述,remarks中填写该方法的注意事项,param中填写方法的传入参数,以及各参数的意义。returns填写函数返回值以及返回值的意义。注意在其中运用xml语法。所有的public及protected方法都要注释。5.程序中的注释在程序中,采用”//”进行单行注释。所有程序中的分支语句需要注释分支条件意义,循环语句需要注释循环的起始条件和中止条件。//满足支付条件if(MeetPayCondition())…//循环遍历数组for(inti=0;iArray.Count;i++)…6.创建Model的规范系统中所有要创建Model实体的地方必须是以下格式obj实体名Model格式。例如要创建一个User对象的实体UserModelobjUserModel=newUserModel;objUserModel.UserName=”张三”;7.关于值的判断比较(1)布尔值布尔值的判断比较不允许直接与false或者true进行比较,更不能直接与0或者1进行比较,例如if(bFlag==0)或者if(bFlag==false)应该遵循以下标准规则if(bFlag)判断变量为真if(!bFlag)判断变量为假(2)整形变量整形变量与0的比较应采用==或者!=严禁整形变量与0比较时采用布尔值的比较方式.(3)浮点型的变量严禁浮点型变量用==或者!=进行比较,浮点型的变量涉及到位数.正确做法是采用=或者=进行比较三.通用规范1.判断与循环的注释对于大段的(超过20行)判断、循环语句,要加注释,对于判断语句(如if,switch),要说明判断的条件和程序的走向。对于循环语句(如while,dowhile,for),要说明循环继续和终止的条件。当有循环嵌套时,尽量把大循环放在内层.2.缩写规范一个项目中用到的同一词语的缩写要求完全统一,如”Project”缩写为”pjt”,则不准用其它的缩写,如”Prjt”或”Pjct”,并且区分大小写,即”PJT”也不能再用于表示”Project”。3.汉语拼音尽量不要使用汉语拼音的声母缩写来做命名。如”Py”用来表示”拼音”会有很多的歧义。4.神秘的数字无论用何种语言编程,都不要出现神秘的数字,如下代码应视为违反本规范:intn;n=128;…对于程序中要用到的常数,在专门的文件中进行定义,定义方法统一用大写的英文,例如:publicfinalintFILE_NAME_MAX_LENTH=128;…也可以写入到独立的配置文件中,在程序中读出其中的数值。如果仅仅是某个类中所使用的话,就作为常量写入类中,例如:privateconststringSIGN_STATUS=“50”;对于数据类型为int型的这些常量,尽量使用枚举类型来处理这些神秘数字。在程序中的数字也并不一定属于神秘的数字,以下情况是允许的:1,索引数字,比如数组访问,数据库字段读取dataReader.GetString(2);2,单元测试代码中用到的数字。5.”{}”的使用相关联的“{“和”}”要么处于同一行,要么处于同一列。只有一行的逻辑代码,可以省略{}四.常用命名前缀列表1.服务器控件命名(常用)控件类型名称前缀样例LabellbllblCurrentPageButtonbtnbtnAuditProjectTextBoxtxttxtDraftIdLinkButtonlbnlbnCreateDraftFormImageButtonibnibnCreateDraftFormHyperLinkhlkhlkPageLinkDropDownList*ddlddlDraftStatusCheckBoxchkchkCheckRadioButtonrbnrbnChoiceOneImageimgimgPictureHiddenFieldhidhidCreateDraftFormLiterallitlitDeviceGridWiewFileUploadfudfudChooseFilePanalpnlpnlEdit2.HTML控件命名控件类型名称前缀样例spanspnspnMessagediv