Google的C++命名规范

本文详细介绍了Google的C++编程规范,涵盖头文件、作用域、C++类、智能指针、命名约定和代码注释等多个方面,旨在提高代码质量、可读性和维护性。遵循这些规范可以有效避免命名冲突,降低耦合度,优化编译和执行效率,并提升团队间的合作效率。

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

头文件:

 

1. 避免多重包含是学编程时最基本的要求;

2. 前置声明是为了降低编译依赖,防止修改一个头文件引发多米诺效应;

3. 内联函数的合理使用可提高代码执行效率;

4. -inl.h 可提高代码可诺性(一般用丌到吧:D),内联代码放到这个里面;

5. 标准化函数参数顺序可以提高可读性和易维护性(对函数参数的堆栈空间有轻微影响,我以前大多是相同类型放在一起);

6. 包含文件的名称使用.和..虽然方便却易混乱,使用比教完整的项目路径看上去很清晰、很条理,包含文件的次序除了美观乊外,最重要的是可以减少隐藏依赖,使每个头文件在“最需要编译”(对应源文件处:D)的地方编译,有人提出库文件放在最后,这样出错先是项目内的文件,头文件都放在对应源文件的最前面,返一点足以保证内部错误的及时发现了。

 

作用域:

 

1. .cc 中的不具名命名空间可避免命名冲突、限定作用域,避免直接使用 using 提示符污染命名空间;

2. 嵌套类符合局部使用原则,只是不能在其他头文件中前置声明,尽量不要 public;

3. 尽量不用全局函数和全局发量,考虑作用域和命名空间限制,尽量单独形成编译单元;

4. 多线程中的全局发量(含静态成员变量)不要使用 class 类型(含 STL 容器),避免不明确行为导致的bugs。

作用域的使用,除了考虑名称污染、可读性之外,主要是为降低耦合度,提高编译、执行效率。

 

C++类:

 

1. 不在构造函数中做太多逻辑相关的初始化;

2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器不再提供,需要编码者自行提供默认构造函数;

3. 为避免隐式转换,需将单参数构造函数声明为 explicit;

4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为 private 且无需实现;

5.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值