Google C++ Style Guide核心规范解读
请总结 Google C++ Style Guide 的核心规范,包括禁止的 C++ 特性(如异常/RTTI/流)、命名规范、头文件组织、智能指针使用建议等条款及其背后的工程理由。
回答
苦行僧
Google C++ Style 核心规范:
禁止的特性(在 Google 旧代码中但逐步松动):
- 异常(Exception):禁用。理由:防止二进制膨胀、stackful 协程冲突、遗留代码兼容。
- RTTI(
dynamic_cast/typeid):禁用(除测试外)。理由:过度抽象、性能开销。 - IO 流(iostream):禁用。推荐
absl::StrCat/absl::StrFormat。理由:性能、ABI 稳定、i18n 困难。
命名规范:
- 文件名:小写+下划线(如
my_class.cpp) - 类型/类:PascalCase(
MyClass) - 变量/函数:camelCase(
myFunction) - 成员变量:尾随下划线(
member_) - 常量:kPascalCase(
kMaxSize) - 宏:全大写+下划线(
MY_MACRO)
头文件:
- #define 保护:
#ifndef FOO_BAR_BAZ_H_ - Include 顺序:本模块头 → C 系统头 → C++ 系统头 → 第三方 → 本工程
- 前置声明优先于
#include
智能指针:
unique_ptr首选;shared_ptr所有权共享;避免auto_ptr- 函数参数:裸指针表示可空,
const unique_ptr&几乎不用。