博客
关于我
C编程规范整理
阅读量:499 次
发布时间:2019-03-07

本文共 2329 字,大约阅读时间需要 7 分钟。

C/C++编码规范指南

内联函数的使用规范内联函数适用于函数体较小的情况,能够提升目标代码效率。对于包含循环或switch语句的函数,建议谨慎内联。若内联函数被多个源文件使用,需定义在.h头文件中。

编译器对内联函数请求可以选择忽略,建议保持最大限度的可移植性。

函数参数顺序函数定义时,输入参数应放在前端,输出参数放在后面。对于输入/输出参数(如类/结构体变量),无需遵循顺序。

文件包含顺序包含文件应遵循以下顺序:C库、C++库、其他库的.h文件、项目内的.h文件。

函数长度建议短小函数更容易维护。对于超过40行的函数,可以考虑分割。

const使用建议在任何可能的情况下都应该使用const。

类型命名规范类型命名每个单词以大写字母开头,无下划线:MyExcitingClass, MyEnumValue。类型命名符合一致约定。

变量命名规范变量名应全小写,单词间以下划线相连,类成员变量名以下划线结尾:my_exciting_var, my_member_var。

全局变量命名全局变量可用g_或其他易区分标志为前缀。

函数命名规范函数名应首字母大写,各单词首字母大写,无下划线:AddTableEntry, DeleteUrl。

存取函数命名函数名应与存取变量名匹配:setMyMemberVar。

内联函数可使用小写字母,例如在循环中调用小写名称的函数。

枚举命名规范枚举值应全部大写,单词间下划线相连:MY_VALUE。枚举名可混合大小写:MyErrors.

宏命名规范宏命名应全部大写,各单词下划线相连。

注释要求注释应放在代码上方或右侧,不能放在下方。上方注释需与上方代码隔开,并保持相同缩进。注释语言选择中文,除非能用流利英文表达。

文件头注释文件头、函数头、全局常量及类型定义应采用doxygen格式注释。

代码排版相对独立的程序块之间需加空行。多语句不可在同一行,需分行写出。

断言使用断言旨在验证内部假设,不用于检查运行时错误。

字符串处理所有字符串需以NULL结尾。

注释位置示例/*注释内容 */或// 单行注释

型注释示例/**

  • @brief 功能描述
  • @param param 参数说明*/

代码格式要求保持一致的缩进和格式化,注释示例请参考上述格式。

注释示例/* 处理完成一个case后加注释 *

  • 为下一个case做准备 */

避免使用缩写,除非是业界通用缩写。

注释语言选择为中英文兼用的项目,建议优先使用中文。需根据团队结构确定注释语言。

类型命名示例/**

  • @typedef TypedefName 名义空间中类、结构体等使用相同格式
  • @enumMyErrors 枚举类型*/示例代码实现

当然,编程规范的遵守不仅是代码层面的标准化,更是团队协作、代码维护的基石。代码美观、可读性为加强产品质量奠定基础,对于长期项目开发具有重要意义。

以下是优化后的文章内容:

C/C++编码规范指南

内联函数的使用规范内联函数适用于函数体较小的情况,能够提升目标代码效率。对于包含循环或switch语句的函数,建议谨慎内联。若内联函数被多个源文件使用,需定义在.h头文件中。

编译器对内联函数请求可以选择忽略,建议保持最大限度的可移植性。

函数参数顺序函数定义时,输入参数应放在前端,输出参数放在后面。对于输入/输出参数(如类/结构体变量),无需遵循顺序。

文件包含顺序包含文件应遵循以下顺序:C库、C++库、其他库的.h文件、项目内的.h文件。

函数长度建议短小函数更容易维护。对于超过40行的函数,可以考虑分割。

const使用建议在任何可能的情况下都应该使用const。

类型命名规范类型命名每个单词以大写字母开头,无下划线:MyExcitingClass, MyEnumValue。类型命名符合一致约定。

变量命名规范变量名应全小写,单词间以下划线相连,类成员变量名以下划线结尾:my_exciting_var, my_member_var。

全局变量命名全局变量可用g_或其他易区分标志为前缀。

函数命名规范函数名应首字母大写,各单词首字母大写,无下划线:AddTableEntry, DeleteUrl。

存取函数命名函数名应与存取变量名匹配:setMyMemberVar。

内联函数可使用小写字母,例如在循环中调用小写名称的函数。

枚举命名规范枚举值应全部大写,单词间下划线相连:MY_VALUE。枚举名可混合大小写:MyErrors.

宏命名规范宏命名应全部大写,各单词下划线相连。

注释要求注释应放在代码上方或右侧,不能放在下方。上方注释需与上方代码隔开,并保持相同缩进。注释语言选择中文,除非能用流利英文表达。

文件头注释文件头、函数头、全局常量及类型定义应采用doxygen格式注释。

代码排版相对独立的程序块之间需加空行。多语句不可在同一行,需分行写出。

断言使用断言旨在验证内部假设,不用于检查运行时错误。

字符串处理所有字符串需以NULL结尾。

注释位置示例/*注释内容 */或// 单行注释

类型命名示例/**

  • @typedef TypedefName 名义空间中类、结构体等使用相同格式
  • @enumMyErrors 枚举类型*/代码格式要求保持一致的缩进和格式化,注释示例请参考上述格式。

注释示例/* 处理完成一个case后加注释 *

  • 为下一个case做准备 */

避免使用缩写,除非是业界通用缩写。

注释语言选择为中英文兼用的项目,建议优先使用中文。需根据团队结构确定注释语言。

代码模板示例/**

  • @brief 功能描述
  • @param param 参数说明
  • @return 返回值说明*/

转载地址:http://kbscz.baihongyu.com/

你可能感兴趣的文章
NTFS文件权限管理实战
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
ntp server 用法小结
查看>>
ntpdate 通过外网同步时间
查看>>
ntpdate同步配置文件调整详解
查看>>
NTPD使用/etc/ntp.conf配置时钟同步详解
查看>>
NTP及Chrony时间同步服务设置
查看>>
NTP服务器
查看>>
NTP配置
查看>>
NUC1077 Humble Numbers【数学计算+打表】
查看>>
NuGet Gallery 开源项目快速入门指南
查看>>
NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
查看>>
nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
查看>>
Nuget~管理自己的包包
查看>>
NuGet学习笔记001---了解使用NuGet给net快速获取引用
查看>>
nullnullHuge Pages
查看>>
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Numix Core 开源项目教程
查看>>