C++编码规范建议

本文介绍编程中变量命名、代码排版、注释和编程规范的建议,涵盖英文命名、小驼峰与大驼峰命名法,以及如何优化代码可读性、减少错误和遵循一致性标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、命名规范建议:

1、  变量命名时用对应的英文单词,不要用拼音。

2、  变量命名建议用小驼峰式命名法(就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。)

3、  类名、方法名、命名空间建议用大驼峰式命名法(相比小驼峰法,大驼峰法把第一个单词的首字母也大写了,例如:MyFirstName、MyLastName)。

4、  变量命名时尽量不要使用难以理解的数字,除非有必要且加上注释。

5、  指针变量命名前加p。

6、  全局变量命名前加g_,如g_SumCount。

7、  静态变量命名前加s_,如s_Count。

8、  枚举变量和枚举成员变量命名前加En。

9、  类成员变量命名前加m_,如m_data。

     10、宏命名使用大写字母加下划线‘_’分隔词义。

     11、常量命名以小写“c_”开头。

     12、VS中解决方案命名、项目命名时前缀应加上公司缩写或产品缩写。

二、代码排版建议

1、一行代码只做一件事情,如只定义一个变量,或只写一条语句,这样的代码容易阅读,并且方便于写注释。

2、尽可能在定义变量的同时初始化该变量(就近原则),如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误,本建议可以减少隐患。

3、if、for、while、do 等语句自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加{},这样可以防止书写失误。

如这种写法是不建议的:if (!pfs)return;

建议改成:

if (!pfs)

return;

三、注释规范建议:

1、源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等信息。实际中至少要列出作者,这样阅读代码有问题时可以找原作者咨询。

2、函数声明前最好加上注释,内容包括“功能”,“参数”,“返回值”,“设计思想”,“调用函数”,“日期”,“修改记录”等信息。

3、全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

四、编程规范建议:

1、判断指针是否为空用nullptr。

2、用指针调用成员变量或方法前,判断该指针是否为空,防止崩溃。

3、函数参数个数控制在5个以内,多的话考虑封装成结构体。

4、类对象作为函数参数时,考虑加上引用&,避免对象构造和析构,提高效率。能用const &尽量用const &。

5、函数参数是指针时且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

6、类的构造函数优先用初始化列表形式,原因在于某些时候可以提高效率。详细原因自行百度。

7、类中函数不修改任何成员变量时要声明为const函数。

8、如果类构造函数只有一个简单类型参数,需要加explicit 修饰符,防止非预期的隐式类型转换。

9、针对vector容器优先用emplace_back()替代push_back(),因为使用emplace_back() 函数可以减少一次拷贝或移动构造的过程,提升容器插入数据的效率。更详细的原因自行百度。

10、使用STL判断容器是否为空时,如果提供了empty()方法,使用empty(),不要获取容器大小然后判断是否为0。

11、对于多态中的基类的析构函数要声明为虚析构函数。

12、如果使用#define定义常量时,优先替换成用const来定义常量,后者会进行类型检查。

13、确保一个函数只干一件事,函数越短小精悍越好。

14、if中的条件逻辑比较复杂时要简化。

15、使用C++中的STL时,算法调用优先于手写的算法。比如用for_each算法替换手写的for循环等。原因如下:

效率:算法通常比自己写的循环效率更高。

正确性:手学循环比使用算法更容器出错。

可维护性:使用算法的代码通常比手写循环的更加简洁明了。

16、使用C++中的STL时,调用容器的成员函数优先于调用同名的算法。因为成员函数更快且与容器结合更精密。比如关联容器提供了count、find算法,list容器提供了remove、remove_if等。

17、double类型数据进行大小比较时加上容差。

18、考虑用组合代替继承。

华为代码规范,适用 C/C++ 1 概述 ................................................................................................................................................................... 5 1.1 编写目的 ........................................................................................................................................... 5 1.2 文档约定 ........................................................................................................................................... 5 1.3 预期的读者和阅读建议 ................................................................................................................... 5 1.4 参考文献 ........................................................................................................................................... 5 2 排版要求 ........................................................................................................................................................... 5 2.1 程序块缩进 ....................................................................................................................................... 5 2.2 程序块之间空行 ............................................................................................................................... 5 2.3 长语句和长表达式 ........................................................................................................................... 6 2.4 循环、判断等长表达式或语句 ....................................................................................................... 7 2.5 长参数 ............................................................................................................................................... 7 2.6 短语句 ............................................................................................................................................... 8 2.7 条件、循环语句 ............................................................................................................................... 8 2.8 语句对齐 ........................................................................................................................................... 8 2.9 函数、过程和结构等语句块 ........................................................................................................... 9 2.10 程序块分界符 ................................................................................................................................... 9 2.11 操作符前后空格 ............................................................................................................................. 10 2.12 其他 ..................................................................................................................................................11 3 注释 ..................................................................................................................................................................11 3.1 有效注释量 ......................................................................................................................................11 3.2 公司标识 ..........................................................................................................................................11 3.3 说明性文件 ..................................................................................................................................... 12 3.4 源文件头 ......................................................................................................................................... 13 3.5 函数头部说明 ................................................................................................................................. 13 3.6 注释与代码一致 ............................................................................................................................. 14 3.7 注释内容 ......................................................................................................................................... 14 3.8 注释缩写 ......................................................................................................................................... 14 3.9 注释位置 ......................................................................................................................................... 14 3.10 变量、常量注释 ............................................................................................................................. 15 3.11 数据结构的注释 ............................................................................................................................. 15 3.12 全局变量 ......................................................................................................................................... 16 3.13 注释缩排 ......................................................................................................................................... 16 3.14 注释与代码之间空行 ..................................................................................................................... 17 3.15 变量定义、分支语句 ..................................................................................................................... 17 3.16 其他 ................................................................................................................................................. 19 4 标识符命名 ..................................................................................................................................................... 20 4.1 命名清晰 ......................................................................................................................................... 20 4.2 特殊命名需注释 ............................................................................................................................. 21 4.3 命名风格保持一致 ......................................................................................................................... 21 4.4 变量命名 ......................................................................................................................................... 21 4.5 命名规范与系统风格一致 ............................................................................................................. 22 4.6 其他 ................................................................................................................................................. 22 5 可读性 ............................................................................................................................................................. 23 5.1 运算符优先级 ................................................................................................................................. 23 第 3 页 共 69 页 5.2 避免直接使用数字作为标识符 ..................................................................................................... 24 5.3 其他 ................................................................................................................................................. 24 6 变量、结构 ..................................................................................................................................................... 25 6.1 公共变量 ......................................................................................................................................... 25 6.2 公共变量说明 ................................................................................................................................. 26 6.3 公共变量访问说明 ......................................................................................................................... 26 6.4 公共变量赋值 ................................................................................................................................. 26 6.5 防止局部变量与公共变量同名。 ................................................................................................. 26 6.6 严禁使用未经初始化的变量作为右值。 ...................................................................................... 26 6.7 其他 ................................................................................................................................................. 27 7 函数、过程 ..................................................................................................................................................... 34 7.1 对所调用函数的错误返回码要仔细、全面地处理。 .................................................................. 34 7.2 明确函数功能,精确(而不是近似)地实现函数设计。 .......................................................... 34 7.3 局部变量 ......................................................................................................................................... 34 7.4 全局变量 ......................................................................................................................................... 34 7.5 接口函数参数 ................................................................................................................................. 35 7.6 其他 ................................................................................................................................................. 35 8 可测性 ............................................................................................................................................................. 44 8.1 调测开关 ......................................................................................................................................... 44 8.2 打印信息 ......................................................................................................................................... 45 8.3 单元测试 ......................................................................................................................................... 45 8.4 集成测试 ......................................................................................................................................... 45 8.5 断言使用 ......................................................................................................................................... 45 8.6 设置与取消有关测试手段时,不能影响软件功能功能 .............................................................. 48 8.7 版本维护 ......................................................................................................................................... 48 8.8 其他 ................................................................................................................................................. 48 9 程序效率 ......................................................................................................................................................... 50 9.1 编程时要经常注意代码的效率。 ................................................................................................. 50 9.2 提高代码效率 ................................................................................................................................. 50 9.3 全局效率高于局部效率 ................................................................................................................. 51 9.4 提高代码空间效率 ......................................................................................................................... 51 9.5 循环体内工作量最小化 ................................................................................................................. 52 9.6 其他 ................................................................................................................................................. 53 10 质量保证 ................................................................................................................................................. 56 10.1 在软件设计过程中构筑软件质量。.............................................................................................. 56 10.2 代码质量保证优先原则 ................................................................................................................. 56 10.3 只引用属于自己的存贮空间。 ..................................................................................................... 56 10.4 防止引用已经释放的内存空间。 ................................................................................................. 56 10.5 内存及时释放 ................................................................................................................................. 57 10.6 文件句柄及时关闭 ......................................................................................................................... 57 10.7 防止内存操作越界 ......................................................................................................................... 58 10.8 认真处理程序所能遇到的各种出错情况 ...................................................................................... 59 10.9 初始化变量 ..................................................................................................................................... 59 10.10 数据一致性检查 ............................................................................................................................. 59 10.11 严禁随意更改其它模块或系统的有关设置和配置 ...................................................................... 59 10.12 不能随意改变与其它模块的接口 ................................................................................................. 59 第 4 页 共 69 页 10.13 系统接口 ......................................................................................................................................... 59 10.14 编程时,要防止差 1 错误 ............................................................................................................. 61 10.15 操作符检查 ..................................................................................................................................... 61 10.16 分支语句写完整 ............................................................................................................................. 62 10.17 使用 return 语句 .............................................................................................................................. 62 10.18 不要滥用 goto 语句 ........................................................................................................................ 62 10.19 其他 ................................................................................................................................................. 62 11 代码编辑、编译、审查 ......................................................................................................................... 65 11.1 打开编译器的所有告警开关对程序进行编译 .............................................................................. 65 11.2 在产品软件(项目组)中,要统一编译开关选项 ...................................................................... 65 11.3 通过代码走读及审查方式对代码进行检查。 .............................................................................. 65 11.4 测试部测试产品之前,应对代码进行抽查及评审 ...................................................................... 65 11.5 其他 ................................................................................................................................................. 65 12 代码测试、维护 ..................................................................................................................................... 67 12.1 单元测试要求至少达到语句覆盖 ................................................................................................. 67 12.2 单元测试开始要跟踪每一条语句,并观察数据流及变量的变化 .............................................. 67 12.3 清理、整理或优化后的代码要经过审查及测试。 ...................................................................... 67 12.4 代码版本升级要经过严格测试 ..................................................................................................... 67 12.5 使用工具软件对代码版本进行维护.............................................................................................. 67 12.6 正式版本上软件的任何修改都应有详细的文档记录 .................................................................. 67 12.7 其他 ................................................................................................................................................. 67 13 宏 ............................................................................................................................................................. 68 13.1 用宏定义表达式时,要使用完备的括号 ...................................................................................... 68 13.2 将宏所定义的多条表达式放在大括号中 ...................................................................................... 68 13.3 使用宏时,不允许参数发生变化 ................................................................................................. 69
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值