C++ 编程规范

我个人写一些小的项目时,总结的一套自己用的C++编程规范。


命名规范

变量命名规范

变量命名要求字母为小写。
变量命名格式为[前缀_](变量名)[_后缀]
其中,方括号[]表示可选,变量名每个单词以下划线_分隔。

注意begin_表示begin为一个前缀,_end表示end为一个后缀。表示变量范围的前缀表示变量类型的前缀可以组合,并把表示变量范围的前缀放到左边;例如一个类成员变量指针可以写为int mp_value;,前缀m_放在前缀p_左边。
表示变量范围的前缀

前缀/后缀代表的含义举例
g_全局变量(global)const int g_images_number;
m_类成员变量(member)int m_value // 因为类成员变量经常与局部变量重名,所以加个m以区分
t_表示这是函数的形参(the)void func(int t_value); // 因为形参经常与局部变量重名,所以加个t以区分
无前缀表示这是局部变量int value);

表示变量类型的前缀

前缀/后缀代表的含义举例
p_指针(pointer)float *p_value;
pd_指向显存的指针(pointer device)float *pd_value;
v_数组(vector)vector<int> v_values; //
is_bool类型bool is_empty; // 顾名思义,is_empty == ture时代表为空

下面可选:

前缀/后缀代表的含义举例
_后缀为下划线_表示这是一个类内的私有变量int m_value_
c_常量(const)const int c_images_number

类定义

一般来说每个类单独一个文件,

前缀/后缀代表的含义举例
_Interface表示这是接口类(纯虚类)class cCamera_Interface{}; // 注意是类名加c,而不是类变量名加c
c_类的名称都要以小写字母“c”开头,不需要下划线,后跟一个或多个单词。为便于界定,每个单词的首字母要大写。例如:cAnalyzerclass cCameraModel{}; // 注意是类名加c,而不是类变量名加c

函数命名

函数名以大写字母开头,每个单词首字母大写,没有下划线

void SetQuackBehavior(cQuackBehavior  *tp_quack_behavior) 

文件命名

  • 对于类文件,类文件与类同名,用前缀小写c表示这是个类文件。一个类对应一个源文件和头文件 。
  • C源文件用.c 作为后缀
  • C头文件用.h 作为后缀
  • C++源文件用.cpp 作为后缀
  • C++头文件用.hpp 作为后缀
  • cuda源文件用.cu 作为后缀
  • cuda头文件用.cuh 作为后缀

宏定义

  • 宏命名为全部大写,用下划线分隔不同单词。例如:
    #define IMAGE_NUMBER
    
  • 宏表达式需要加括号,防止加减法优先级低于乘除法导致表达式计算错误。宏的参数需要加括号,防止用户传的宏参数为加法表达式而导致出错。举例如下:
    #define IMAGE_RESERVE 3ULL // ULL后缀表示该常量为unsigned long long类型
    #define IMAGE_NUMBER (2+IMAGE_RESERVE) // 若表达式不加括号(),由于加减法优先级低于乘除法,那么IMAGE_BUFFER的计算就会出错
    #define IMAGE_SIZE 1920*1080
    #define IMAGE_BUFFER_SIZE IMAGE_SIZE*3ULL*IMAGE_NUMBER 
    #define IMAGE_BUFFER_ADDRESS  (char*)p_buffer //
    #define IMAGE_BUFFER_ADDRESS(i)  (IMAGE_BUFFER_ADDRESS + IMAGE_BUFFER_SIZE * (i)) //对于i也要加括号,因为用户传进来的i可能是一个加法表达式,例如i为3+2,这时如果不加括号就会出错。
    
  • [可选] 可定义几个空的宏,指示函数形参是输入还是输出
    #define IN(x) x
    #define OUT(x) x
    #define INOUT(x) x
    

TODO:编程规范

相关/参考链接

  • 《google编程规范》
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值