还剩5页未读,继续阅读
文本内容:
C++代码审查清单审查人名字检查日期年月日审查内容审查结果通过口不通过口说明审查内容清单序号条款执行情况说明1文件结构和程序组织001【规则强制】关于文件的命名,文件名由单个或多个有意义且能“体现该文件功能”的单词、约定俗成的单词缩写组成◊每个单词的首字母必须大写;◊单词之间不要用下划线分割;◊其文件名尽量和类名同名是否免[1【)【)2排版风格002【规则2-1-1强制】代码要按照其逻辑层次进行水平缩进,缩进以一个Tab键(同一个项目组中Tab要统一为4个空格)为单位,使同一逻辑层次上的代码在列上对齐是否免[][][]003【规则2・1・2强制】函数或过程的开始,类、结构、联合、枚举的定义及循环、判断、分支选择等语句中的代码都要采用缩进风格,所配对的括号{}独占一行并且处于同一列,同时与引用他们的语句左对齐是否免[1[1[]003【规则2-1-3强制】switch语句中所有的case需对齐,case中执行语句无法多少都需要添加大括号{}break需要以一个Tab键(同一个项目组中Tab要统一为4个空格)的间距进行缩进是否免[][1[]004【规则2・1・4强制】条件语句中成对的if…else要对齐分支中执行语句无论多少都需要添加大括号{}是否免[1[][1005【规则2-1-5强制】do...while语句中的while语句在do语句结束的T同一行开始书写,“『与while之间需要添加一个空格是否免[][1[]006【规则2-1-6强制】#define宏定义的各个字段值需要对齐是否免【]【)【)007【规则2・2・1强制】在头文件和实现文件中,各主要部分之间要用空行隔开(所谓文件的主要部分,包括序言性注释、防止被重复包含部分(只在头文件中)、#include部分、#define部分、类型声明和定义部分、实现部分等等)是否免[1[1【)008【规则2・2・2强制】函数体内,逻辑上密切相关的语句之间不要加空行,其余的地方应该加空行(或在一个函数中,完成不同功能的部分,要用空行隔开)是否免[1[][]009【规则2・3・1强制】比较操作符、赋值操作符、算术操作符、逻辑操作符、位操作符等双目操作符的前后要各加一个空格是否免[1[1[1010【规则2-3-2强制】不要在一元操作符和其操作对象之间使用空格,一元操作符包括“++”、“一”、3等是否免【]【]【1011【规则2-3-3强制】不要在引用操作符.7>7仃等以及“::的前后不要使用空格是否【1【]免【1012【规则2・3・4强制】if、for、whileswitch等与后面的括号间不添加空格是否免[1[1[]013【规则2-3・5强制】’(向后紧跟,向前紧跟,紧跟处不留空格是否免【1[]【1014【规则2・3-6强制】应当将修饰符*和紧靠变量名,修饰符前添加一个空格是否免【1[][1015【规则2-3-7强制】函数的各参数间要用“,”和一个空格隔开,如果不是一行的结束符,其后应该留空格是否免【][][]016【规则2・3-8强制】函数名之后不需要加空格,紧跟左括号是否免[1【)【)017【规则2・3・9强制】单行注释语句在“〃”后空一格再开始书写,“//”与前面的语句至少距离一个空格是否免[][][]018【规则2-4-1强制】if、for、dowhilecaseswitchdefault等语句各自占一行,且if、for、dowhile等语句的执行语句部分无论多少行都要加括号大括号{}是否免[1[]【1019【规则2・4・2强制】程序块的分界符(如C++语言中的大括号{‘和})应各自占一行且位于同一列,同时与引用它的语句左对齐是否免[][]【)020【规则2・4・3强制】一行只写一条语句,不允许将多条短语句写成一行;单条语句要尽量简洁,不能包含过多的操作是否免[][][]021【规则2・4・5强制】一行程序以小于120个字符为宜,不能写得过长;对于较长的语句(多余120个字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要适当缩进(使用Tab缩进到上一行同等关系处),使排版整齐,语句可读是否免[][1[]022【规则2・4・6强制】循环、判断等语句中若有较长的表达式或语句时,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首是否免【]【)【)023【规则2・4・7强制】若函数或过程中的参数较长,则要进行适当的划分,新行使用Tab缩进到上一行同等关系处是否免[][][]024【规则2・4-8强制】一次只声明、定义一个变量,并采用就近原则,尽可能在定义变量的同时初始化该变量;同一类型的变量声明或赋值时需要放在一起是否免[]【)【)025【规则2・4・9强制】不同类型的操作符混合使用时,需要使用括号给出优先级是否免[][1[]3注释规范026【规则3・1・2强制】边写代码边写注释,修改代码同时修改相应的注释,以确保注释与代码一致性,多余或者不再使用的注释要删除是否免[][][]027【规则3・1・3强制】注释内容要清晰明了,含义准确,不能出现二义性,避免在注释中使用缩写,特别是不常用的缩写是否免【)[][J028【规则3-1・5强制】注释需要放在代码的右边或者上边,不能放在代码的下边变量注释和一般语句注释,注释内容直接跟在语句后;对代码段的注释要放在代码段前说明,且注释要与其上面代码用空行隔开是否免[]【)[]029【规则3・1・6强制】注释格式尽量统一,单行注释建议使用“〃”;多行或注释段,建议使用/……不要在一行代码或表达式的中间插入注释;注释需要与其所描述内容进行同样的缩进是否免[1[]【)030【规则3・3・1强制】在函数的声明之前,要给出精练的注释(不必牵扯太多的内部细节),让使用者能够快速获得足够的信息使用函数是否免[1[][]031【规则3-4-2强制】类的public和protected方法和成员必须添加注释说明用途和使用方法是否免【1[1[]4命名规范032【规则4・1・1强制】标识符应当直观且可以拼读,可望文知意不必进行“解码、标识符最好采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名,程序中的英文单词一般不用太复杂,用词应当准确是否免[]【][]033【规则4-1-2强制】标小:符的长度应当符合“min-lengthmax-information”原贝ij是否免[1[1[]034【规则4-1-3强制】程序中不要出现仅靠大小写区分的相似的标识符是否免[1[1[1035【规则4-1-4强制】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解;对于全局变量,建议添加前缀的方式以示区别是否免[][][1036【规则4・2・1强制】类的名称都要以大写字母“C”开头,后跟一个或多个单词当名称由多个单词构成时,每一个单词的第一个字母必须大写,其余字母小写,单词之间不用下划线分割;类的命名推荐用“名词”或“形容词+名词”的形式,类名前不使用前缀来标识模块或者产品,如有需要时可使用命名空间namespace来体现是否免[1[1【]037【规则4-2-2强制】父类和子类的名字之间要具有关联性,以体现继承关系是否免[][][]038【规则4-3-1强制】接口开头以表示Interface的字母T为前缀,单词应清晰表达接口的用途和功能是否免[J[1[1039【规则4-3-2强制】当接口名称由多个单词构成时,每个单词的第一个字母必须大写,其它字母小写,不加分隔符;建议用“名词”或“形容词+名词”的形式是否免[][]【)040【规则4・4・1强制】函数名最长不得超过30个字符,如果超长应适当采用缩写的形式,函数名不使用任何前缀是否免[][][1041【规则4・4・2强制】当名称由多个单词构成时,每个单词首字母为大写,其余字母均为小写;单词之间不要下划线分害I」;函数名应以一个动词开头,建议使用“动词”或“动词+名词”的格式,函数名应清晰反映函数的功能或用途是否免【1[][1042【规则4・5・2强制】变量名最长不得超过32个字符,应当使用“名词”或者“形容词+名词”的形式;变量名应清晰反映变量的功能、用途是否免【1[][1043【规则4・5・3强制】对于变量命名,禁止使用单个字符(如i、j、k…)进行命名,建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量则是允许的是否免【1[1[]5代码设计044【规则强制】如果代码行中的运算符比较多,需要用括号确定表达式的操作顺序,避免使用默认的优先级是否免[][][]045【规则5-1-2强制】不要编写太复杂或者多用途的复合表达式是否免[1[][]046【规则521强制】不可将布尔变量直接与TUREFALSE或者L0进行比较是否免[1【][1047【规则5-2-2强制】应当将整型变量用“==或!=”直接与0比较是否免[][]【)048【规则5-2-3强制】不可将浮点变量用“==或!=”与任何数字比较,应该设法转化成或“v=”形式是否免[][]【)049【规则5-2-4强制】应当将指针变量用“==或!=”与NULL比较,指针变量的零值是‘空(记为NULL)尽管NULL的值与0相同,但是两者意义不同,同时将值放在比较符号的前面,避免出现赋值的情况是否免[1[1【]050【规则5-2-5强制】if和else最好配对使用如果else分支确实不需要处理,也可以添加Log输出是否免[]【][1051【规则527强制】不要忘记最后那个default分支,即使程序真的不需要default处理,也应该保留语句“defaukbreak;是否免【)[][]052【规则5・3・1强制】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨循环层的次数是否免[][][1053【规则5・4・3强制】类中的常量不能直接被初始化,只能在类构造函数的初始化表中初始化是否免[][]【)054【规则5-5-2强制】对接口参数的合法性检查应由接口函数本身负责是否免[][][]055【规则5・5・4强制】参数书写要完整,不能图省事只写参数类型而省略参数名字是否免【][]【)056【规则5-5・6强制】防止将函数的参数作为工作变量是否免[]【)[]057【规则5-5・16强制】对已经存在的运算符进行重载时,不能改变其优先级规则,否则将引起混乱是否免【][][]058【规则5-5-19强制】return语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁是否免【1[1[]059【规则5-6・4强制】类与派生类的析构函数应该为虚(即加virtual关键字)是否免[][][]060【规则5-7-1强制】用malloc或new申请内存之后,应该立即检查指针是否为NULL防止使用指针为NULL的内存是否免[1[][]061【规则5・7・2强制】不要忘记为数组和动态内存赋初值,防止将未被初始化的内存作为有值使用是否免[1【][1062【规则5-7-3强制】避免数组下标越界,特别要当心发生“多1”或者“少1”操作是否免[][]【)063【规则5・7・4强制】动态内存的申请与释放必须配对,防止内存泄漏是否免[][]【)064【规则5-7-5强制】如果重载了操作符“new”,也应该重载操作符“delete”是否免[1[1【1065【规则5-7-5强制】用free或delete释放了内存之后,立即将指针设置为NULL防止产生“野指针”是否免[][][1066【规则5・8・1强制】用宏定义表达式时,要使用完备的括号是否免[1[]【]067【规则5-8-2强制】将宏所定义的多条表达式放在大括号中是否免[][][1068【规则5-9-1强制】去掉没必要的公共变量是否免[][]【)069【规则5-9・5强制】防止局部变量与公共变量同名是否免[][][]070【规则5-9-6强制】严禁使用未经初始化的变量作为有值使用是否免【][1[]6编码原则071【规则6・3・14强制】程序中分配的内存、申请的文件句柄等资源,在不用时应及时释放或关闭,而不是程序结束时释放是否免[1[][]072【规则6-3-17强制】不应花过多时间去拼命提高调用不很频繁的代码效率是否免[1[][]。
个人认证
优秀文档
获得点赞 0