C#书写规范目录1目的…………………………………………………………………………………………………………2范围……………………………………………………………………………………………………………3注释规范3.1概述………………………………………………………………………………………………………3.2自建代码文件注释…………………………………………………………………………………………3.3模块(类)注释…………………………………………………………………………………………3.4类属性注释………………………………………………………………………………………………3.5方法注释…………………………………………………………………………………………………3.6代码间注释………………………………………………………………………………………………4命名总体规则5命名规范5.1变量(Variable)命名……………………………………………………………………………………5.2常量命名……………………………………………………………………………………………………5.3类(Class)命名……………………………………………………………………………………………5.4接口(Interface)命名……………………………………………………………………………………5.5方法(Method)命名………………………………………………………………………………………5.6名称空间(Namespace)命名………………………………………………………………………………6编码规则6.1错误检查规则……………………………………………………………………………………………6.2大括号规则………………………………………………………………………………………………6.3缩进规则…………………………………………………………………………………………………6.4小括号规则………………………………………………………………………………………………6.5Ifelse规则……………………………………………………………………………………………6.6比较规则………………………………………………………………………………………………6.7Case规则…………………………………………………………………………………………………6.8对齐规则…………………………………………………………………………………………………6.9单语句规则………………………………………………………………………………………………6.10单一功能规则…………………………………………………………………………………………6.11简单功能规则…………………………………………………………………………………………6.12明确条件规则…………………………………………………………………………………………6.13选用FALSE规则…………………………………………………………………………………………6.14独立赋值规则…………………………………………………………………………………………6.15定义常量规则…………………………………………………………………………………………6.16模块化规则……………………………………………………………………………………………6.17交流规则………………………………………………………………………………………………7编程准则7.1变量使用…………………………………………………………………………………………………7.2数据库操作………………………………………………………………………………………………7.3对象使用…………………………………………………………………………………………………7.4模块设计原则……………………………………………………………………………………………7.5结构化要求………………………………………………………………………………………………7.6函数返回值原则…………………………………………………………………………………………8代码包规范8.1代码包的版本号…………………………………………………………………………………………9代码的控制9.1代码库/目录的建立………………………………………………………………………………………9.2代码归档…………………………………………………………………………………………………10输入控制校验规则10.1登陆控制…………………………………………………………………………………………………10.2数据录入控制……………………………………………………………………………………………11数据库命名和使用规范附件1:数据类型缩写表附件2:服务器控件名缩写表附件3:代码生成器生成代码格式1目的一.为了统一公司软件开发设计过程的编程规范。二.使网站开发人员能很方便的理解每个目录,变量,控件,类,方法的意义。三.为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。四.编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软件开发工作。2范围本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。3注释规范3.1概述A注释要求写清楚作者,时间,功能描述,参数描述,返回数据。B注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。C每行注释的最大长度为100个字符。D将注释与注释分隔符用一个空格分开。E不允许给注释加外框。F编码的同时书写注释。G重要变量必须有注释。H变量注释和变量在同一行,所有注释必须对齐,与变量分开至少四个“空格”键。如:intm_intLevel,m_intCount;//注释stringm_strSql;//注释I典型算法必须有注释。J在循环和逻辑分支地方的上行必须就近书写注释。K程序段或语句的注释在程序段或语句的上一行L在代码交付之前,必须删掉临时的或无关的注释。M为便于阅读代码,每行代码的长度应少于100个字符。3.2自建代码文件注释对于自己创建的脚本代码文件(函数),在文件开头,一般编写如下注释,在项目上线时把有注释文件备份后删除注释上线:///作者:作者中文名///创建日期:YYYY-MM-DD///功能描述:对该方法的说明///参数说明:传入参数///返回数据说明:3.3模块(类)注释模块开始必须以以下形式书写模块注释:(尽量使用代码生成器来生成类,这样风格就比较统一)///summary///创建者:///创建时间:2008-02-29///修改者:///修改时间:///修改内容:///类功能:////summary3.4类属性注释在类的属性必须以以下格式编写属性注释:///summary///Propertiesdepiction////summary3.5方法注释在类的方法声明前必须以以下格式编写注释///summary///作者:作者中文名///创建日期:YYYY-MM-DD///功能描述:该方法的说明////summary///paramname=参数名称参数说明/param///returns///对方法返回值的说明,该说明必须明确说明返回的值代表什么含义////returns3.6代码间注释代码间注释分为单行注释和多行注释://单行注释/*多行注释1多行注释2多行注释3*/代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。4命名总体规则A名字应该能够标识事物的特性。B名字一律使用英文单词,而不能为拼音。C名字尽量不使用缩写,除非它是众所周知的。D名字可以有两个或三个单词组成,但不应多于三个,控制在3至30个字母以内。E在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUser。F名字尽量使用前缀而不是后缀。G名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。5命名规范5.1变量(Variable)命名A程序文件(*.cs)中的变量命名,程序中变量名称=变量的前缀+代表变量含意的英文单词或单词缩写。B类模块级的变量请用“m_”+数据类型缩写作为前缀(其中,m为“memory”缩写,数据类型缩写见附件中的《数据类型缩写表》)。publicclasshello{privatestringm_strName;privateDateTimem_dtmDate;}C类的属性所对应的变量,采用属性名前加“m_”+类型缩写前缀的形式.publicclasshello{privatestringm_strName;publicstringstrName{get{returnm_strName;}}}D函数级的变量使用类型缩写前缀publicclasshello{voidsay(){stringstrSayWord;}}E函数中的参数使用“p_”+类型缩写作为前缀(其中,p为“parameter”缩写)publicclassTest{privatevoidsay(stringp_strSayWord){}}F类模块级的全局变量用“g_”+类型缩写作为前缀(其中,g为“global”缩写)publicclassTest{publicstringg_strUserName;privatevoidsay(stringp_strSayWord){}}补充说明:针对异常捕获过程中的Exception变量命名,在没有冲突的情况下,统一命名为exp;如果有冲突的情况下,可以用“exp”+标志名称,如:expSql。Try{//yourcodetry{//code}catch(Exceptionexp){//yourcode}}catch(ExceptionexpSql){//yourcode}补充:如果捕获异常不需要作任何处理,则不需要定义Exception实例。例:try{//yourcode}catch(Exceptionexp){}F其他说明:在工程设置中我们将起用生成XML文档文件,并且我们在调试中不能够看见警告,这样能够确保所有的需要注释的地方不遗漏。5.2常量命名常量名也应当有一定的意义,格式为C_前缀后面在加符合意思的名称,如C_AUTHEN。常量名均为大写,字之间用下划线分隔。例:privateconstboolC_ISINBOX=true;privateconstintC_JOBCOUNT=3600;privateconstboolC_ISPOST=false;5.3类(Class)命名A名字应该能够标识事物的特性,在事物逻辑层添加BLL前缀,方便WEB层调用提示和明确意思。B名字尽量不使用缩写,除非它是众所周知的(长用缩写如information—info;customer—ctm...)。C名字可以有两个或三个单词组成,但通常不应多于三个(CurrentUserInfo)。D在名字中,所有单词第一个字母大写。例如IsSuperUser,包含ID的,ID全部大写,如CustomerID。E使用名词或名词短语命名类。F不要使用下划线字符(_)。例:publicclassFileStreampublicclassCustomerpublicclassBLLUser5.4接口(Interface)命名和类命名规范相同,唯一区别是接口在名字前加上“I”前缀例:interfaceIDBCommand;interfaceIButton;5.5方法(Method)命名和类命名规范相同。5.6命名空间(NameSpace)命名和类命名规范相同。6编码规则6.1错误检查规则A编程中要考虑