《c语言代码编写规范》由会员分享,可在线阅读,更多相关《c语言代码编写规范(10页珍藏版)》请在金锄头文库上搜索。
1、C#C#代码编写规范代码编写规范 1 1目的目的 为了统一公司软件开发的设计过程中关于代码编写时的编写规范和具体开发工作时的编程规范, 保证代码的一致性,便于交流和维护,特制定此规范。 2 2范围范围 本规范适用于开发组全体人员,作用于软件项目开发的代码编写阶段和后期维护阶段。 3 3注释规范注释规范 3.13.1概述概述 a)注释建议使用英文及英文的标点符号。 b)注释中,应标明对象的完整的名称及其用途,但应避免对代码过于详细的描述。 c)每行注释的最大长度为 100 个字符。 d)不允许给注释加外框。 e)编码的同时书写注释。 f)重要变量必须有注释。 g)变量注释和变量在同一行,所有注释
2、必须对齐,与变量分开至少两个“Tab”键。 如:intm_iLevel,m_iCount;/ m_iLeveltree level / m_iCount count of tree items string m_strSql;/SQL h)典型算法必须有注释。 i)在循环和逻辑分支地方的上行必须就近书写注释。 j)程序段或语句的注释在程序段或语句的上一行 k)在代码交付之前,必须删掉临时的或无关的注释。 l)为便于阅读代码,每行代码的长度应少于 100 个字符。 3.23.2自建代码文件注释自建代码文件注释 对于自己创建的代码文件(如函数、脚本),在文件开头,一般编写如下注释: /* File
3、Name: Copyright(c)2004-xxxx *公司技术开发部 Writer: create Date: Rewriter: Rewrite Date: Impact: Main Content(Function Name、parameters、returns) */ 3.33.3模块(类)注释模块(类)注释 模块开始建议使用以下形式书写模块注释: / /Module ID: /Depiction: /Author:作者中文名 /Create Date: / 如果模块只进行部分少量代码的修改时,则每次修改须添加以下注释: /Rewriter:Rewrite Date:Start1:
4、/* 原代码内容*/ /End1: 将原代码内容注释掉,然后添加新代码使用以下注释: /Added by:Add date: Start2: 新代码内容 /End2: 如果模块输入输出参数或功能结构有较大修改,则每次修改必须添加以下注释: / /Log ID: /depiction: /Writer:修改者中文名 /Rewrite Date: / 3.43.4类属性注释类属性注释 在类的属性必须以以下格式编写属性注释: / / / 3.53.5方法注释方法注释 在类的方法声明前必须以以下格式编写注释 / / depiction: / / “ / / / /Writer:作者中文名 /Creat
5、e Date: 3.63.6代码间注释代码间注释 代码间注释分为单行注释和多行注释: 单行注释: / 多行注释: /*多行注释 1 多行注释 2 多行注释 3*/ 代码中遇到语句块时必须添加注释 (if,for,foreach,) ,添加的注释必须能够说明此语句块 的作用和实现手段(所用算法等等)。 4 4命名总体规则命名总体规则 名字应该能够标识事物的特性。 名字一律使用英文单词,而不能为拼音。 名字尽量不使用缩写,除非它是众所周知的。 名字可以有两个或三个单词组成,但不应多于三个,控制在 3 至 30 个字母以内。 在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSup
6、erUser。 名字尽量使用前缀而不是后缀。 名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDelete(而 不是 FunctionDeleteUser)。 文件名一般以类名一致,切遵循类命定义规则,及大小写规范。 在具体任务开发中, 如果有特定的命名约定, 则在相应的软件开发计划中予以明确定义及上报质 量管理部审计组。 5 5命名规范命名规范 5.15.1变量(变量(VariableVariable)命名)命名 a)程序文件(*.cs)中的变量命名 所有变量如果无前缀必须首字母小写, 前缀无特殊要求,但必须是易于识别公认的做法, 如m_ _,切毋自创缩写
7、鉴于大多数名称都是通过连接若干单词构造的,必须使用大小写混合的格式以简化它们的阅 读。每个单词的第一个字母都是大写. 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于 短循环索引使用单字母变量名,如 i 或 j。 在变量名中使用互补对,如 min/max、begin/end 和 open/close。 不要使用原义数字或原义字符串,如 For (i = 1;i = 7;i+)。而是使用命名常数,如 For (i = 1;i = NUM_DAYS_IN_WEEK;i+) 以便于维护和理解。 b)控件命名 控件命名 = Web 控件缩写前缀+ “_” + 名称 如:
8、DataGriddg_UserList 或 dgUserlist 5.25.2常量命名常量命名 常量名也应当有一定的意义,格式为 NOUN 或 NOUN_VERB。常量名均为大写,字之间用下划线分 隔。 例: private const boolWEB_ENABLEPAGECACHE_DEFAULT= true; private const intWEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600; private const boolWEB_ENABLESSL_DEFAULT= false; 注: 变量名和常量名最多可以包含 255 个字符,但是,超过
9、25 到 30 个字符的名称比较笨拙。此 外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25 或 30 个字符应当足够 了。 5.35.3类(类(ClassClass)命名)命名 a)名字应该能够标识事物的特性。 b)名字尽量不使用缩写,除非它是众所周知的。 c)名字可以有两个或三个单词组成,但通常不应多于三个。 d)在名字中,所有单词第一个字母大写。例如IsSuperUser,包含 ID 的,ID 可以全部大写, 如 CustomerID。 e)使用名词或名词短语命名类。 f)少用缩写。 g)不要使用下划线字符 (_)。 例:public class FileStream pu
10、blic class Button public class String 5.45.4接口(接口(InterfaceInterface)命名)命名 和类命名规范相同,唯一区别是接口在名字前加上“I”前缀 例: interface IDBCommand; interface IButton; 5.55.5方法(方法(MethodMethod)命名)命名 和类命名规范相同。 5.65.6命名空间(命名空间(NameSpaceNameSpace)命名)命名 和类命名规范相同。 5.75.7属性属性(Property)(Property)命名命名 与类名命名规范相同。 6 6编码规则编码规则 6.1
11、6.1错误检查规则错误检查规则 a)编程中要考虑函数的各种执行情况,尽可能处理所有流程情况。 b)检查所有的系统调用的错误信息,除非要忽略错误。 c)将函数分两类:一类为与屏幕的显示无关, 另一类与屏幕的显示有关。对于与屏幕显示无 关的函数,函数通过返回值来报告错误。 对于与屏幕显示有关的函数,函数要负责向用户发出 警告,并进行错误处理。 d)错误处理代码一般放在函数末尾。 e)对于通用的错误处理,可建立通用的错误处理函数,处理常见的通用的错误。 6.26.2大括号规则大括号规则 将大括号放置在关键词下方的同列处,例如: if ($condition)while ($condition) 6.
12、36.3缩进规则缩进规则 使用一个“Tab”为每层次缩进。例如: function func() if (something bad) if (another thing bad) while (more input) 6.46.4小括号规则小括号规则 a)不要把小括号和关键词(if 、while 等)紧贴在一起,要用空格隔开它们。 b)不要把小括号和函数名紧贴在一起。 c)除非必要,不要在 Return 返回语句中使用小括号。因为关键字不是函数,如果小括号紧贴 着函数名和关键字,二者很容易被看成是一体的。 6.56.5IfIf ThenThen ElseElse 规则规则 如果你有用到 el
13、se if 语句的话,通常最好有一个 else 块以用于处理未处理到的其他情况。可 以的话放一个记录信息注释在 else 处,即使在 else 没有任何的动作。其格式为: if (条件 1)/ 注释 else if (条件 2)/ 注释 else/ 注释 注:if 和循环的嵌套最多允许 4 层 6.66.6比较规则比较规则 总是将恒量放在等号/不等号的左边。一个原因是假如你在等式中漏了一个等号,语法检查器会 为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。例如: if ( 6 = $errorNum ) . 6.76.7CaseCase 规则规则 default case
14、 总应该存在,如果不允许到达,则应该保证:若到达了就会触发一个错误。Case 的选择条件最好使用 int 或 string 类型。 6.86.8对齐规则对齐规则 变量的申明和初始化都应对齐。例如: intm_iCount; inti,j; floatm_fIncome,m_fPay; m_iCount= 0; i= 1; m_fIncome = 0.3; 6.96.9单语句规则单语句规则 除非这些语句有很密切的联系,否则每行只写一个语句。 6.106.10单一功能规则单一功能规则 原则上,一个程序单元(函数、例程、方法)只完成一项功能。 6.116.11简单功能规则简单功能规则 原则上,一个程
15、序单元的代码应该限制在一页内(2530 行)。 6.126.12明确条件规则明确条件规则 不要采用缺省值测试非零值。例如:使用“if( 0 !=f( ) )”而不用“if( f( ) )”。 6.136.13选用选用 FALSEFALSE 规则规则 大 部分函数在错误时返回 FALSE、0 或 NO 之类的值,但在正确时返回值就不定了(不能用一个 固定的 TRUE、1 或 YES 来代表),因此检测一个布尔值时应 该用 FALSE、0、NO 之类的不等式来 代替。例如:使用“if( FALSE !=f( ) )”而不用“if(TRUE =f( ) )”。 6.146.14独立赋值规则独立赋值规则 嵌入式赋值不利于理解程序,同时可能回造成意想不到的副作用,应尽量编写独立的赋值语句。 例如:使用“a = b + c ;e = a + d;”而不用“e = ( a = b + c ) + d ”。 6.156.15定义常量规则定义常量规则 对于代码中引用的常量(尤其是数字),应该 define 成一个大写的名字,在代码中引用名字而 不直接引用值。 6.166.16模块化规则模块化规则 某一功能,如果重复实现一遍以上,即应考虑模块化,将它写成通用函数。并向小组成员发布。 同时要尽可能利用其它人的现成模块。 6.176