关于我的C++编码规范
①、编码规范目的:提升代码可读性、可维护性,减少 bug,方便调试与小组协作。下面是本学期重点遵守的规范,兼顾高校 C++ 课程要求。
②、命名规范:不使用拼音、中文、网络简写命名
1、类、结构体、枚举类型:大驼峰命名法,每个单词首字母大写。
2、变量名:蛇形命名法(下划线分隔小写单词)。循环临时变量可使用i, j, k;其余变量必须表达含义。
3、函数名:蛇形命名,优先使用动词或动宾结构,体现函数行为
4、常量:全部大写,下划线分隔单词。优先使用const代替宏常量。
5、命名禁止项:
禁止单字母无意义变量(循环变量除外);
禁止拼音命名:xue_hao;禁止大小写混用、名字过长;
禁止使用 C++ 关键字作为标识符。
③代码排版、缩进与空格
1、缩进:使用4个空格,禁止使用 Tab 制表符。不同编辑器 Tab 宽度不一致,会造成代码排版错乱。
2、空格规则:
二元运算符+ - * / = > < && ||两侧添加空格;
一元运算符! ++ -- & *不加空格;
逗号,后面加空格,分号;后面加空格;
函数参数列表逗号后加空格;
括号内侧紧贴内容,括号内侧不加空格。
3、大括号风格:大括号单独占一行,左大括号与右大括号对齐,方便查看代码块边界。同一源文件风格必须保持一致,不允许混合使用多种大括号风格。
4、空行规则:
函数与函数之间空一行;
函数内部,不同逻辑块之间空一行;
头文件包含、常量定义、类定义之间适当空行;
连续多个空行只保留一行。
5、单行长度:一行代码字符不超过 100 字符,代码过长时换行。
6、一行一条语句:一行只写一条语句,禁止多条语句写在同一行。
④、注释规范
注释作用:解释设计思路、为什么这么写,不要复述代码本身。代码内部优先单行注释//
1、文件头部注释:每个.cpp和.h文件开头添加块注释,包含:文件名、作者、功能说明、编写时间。
2、函数注释:函数上方添加注释,说明:函数功能、入口参数含义、返回值含义、特殊限制。
3、行内注释:代码关键逻辑处添加//注释,注释放在代码右侧或者单独一行;废弃代码不要注释保留,直接删除。
4、禁止无效注释
⑤、头文件与 #include 管理
1、头文件保护宏(防止重复包含):所有.h头文件开头必须添加保护宏,宏名一般为文件名全大写加下划线。
2、include 引入顺序:先引入系统标准头文件,空一行,再引入自定义头文件。
3、头文件只放声明,不放定义:头文件中只写类定义、函数声明、常量声明;变量定义、函数实现写在.cpp 源文件,避免多重定义编译错误。
4、不要在头文件使用using namespace std;,防止命名冲突。
⑥、变量、类型与内存管理规范
1、变量就近定义:变量在第一次使用前定义,不要全部集中写在函数最开头。
2、优先使用 const:数据一旦确定不再修改,添加const修饰,防止误赋值。
3、减少全局变量:尽量不使用全局变量;确需使用时,必须加注释说明用途。
4、动态内存 new /delete:new与delete成对使用;数组使用new[]开辟内存,必须用delete[]释放,防止内存泄漏。
5、指针变量定义时,*紧贴变量名。
⑦、函数编写规范
1、单一职责原则:一个函数只完成一项功能。函数代码行数不宜过长,建议控制在 50 行以内。如果代码过长,拆分成多个子函数。
2、参数设计:
参数数量不宜过多;
输入对象参数优先使用const &常量引用,减少对象拷贝开销;
输出型参数使用普通引用或者指针。
3、返回值:返回值含义清晰,不要复用返回值表达多种含义。
4、函数声明和实现分离:声明放在.h,函数实现写在.cpp。
⑧、语句、语法安全规范
1、if、for、while 语句,即使只有一条执行语句,也必须加大括号,后续增加代码时避免逻辑错误。
2、禁止滥用goto语句,仅在多层嵌套退出等极少数场景使用。
3、数组、容器访问前判断下标范围,防止数组越界。
4、避免除零操作,除法运算前检查除数是否为 0。
5、分离输入输出和业务逻辑:计算逻辑函数尽量不写cin/cout;输入输出单独写在主函数或者 IO 函数中。
⑨、类与面向对象规范
1、类成员访问权限:遵循封装原则,成员变量一般设置为private,提供 public 成员函数访问。
2、类成员函数:不修改成员变量的成员函数,末尾加const。
3、构造函数初始化列表优先用于成员初始化。
4、类内不要写过多业务代码,保持类职责单一。
⑩、异常、宏与其他约定
1、宏定义尽量少用,优先使用const常量、inline 内联函数替代宏。
2、所有固定数值定义为命名常量。
3、代码提交前:删除无用调试输出、废弃注释代码。
综上,本学期编写 C++ 代码时,严格遵守上述编码规范:命名上,类和结构体采用大驼峰命名;变量、函数采用蛇形命名;常量全部大写下划线分隔,命名做到见名知意。排版采用 4 空格缩进,Allman 大括号风格,运算符两侧增加空格,单行代码长度控制在 100 字符以内,一行仅写一条语句。注释区分文件注释、函数注释与行内注释,重点解释代码设计逻辑,不重复描述代码动作。头文件使用头文件保护宏防止重复包含,#include按系统头文件在前、自定义头文件在后的顺序引入。变量遵循就近定义原则,只读数据添加const修饰;动态内存分配与释放成对使用,避免内存泄漏。函数遵循单一职责原则,参数优先使用 const 引用减少拷贝开销。if、循环语句无论内部语句多少,均添加大括号;访问数组前校验下标,规避数组越界、除零等错误。减少全局变量,遵循面向对象封装特性,类成员变量私有化;代码中不使用魔鬼数字,废弃代码直接删除,保证代码整洁、安全、易于阅读和调试。

浙公网安备 33010602011771号