Google C++ Style Guide

Naming

Google C++ 命名规范是 Google C++ Style 的一小部分,主要介绍 Google 的 C++ naming convention style。你可以根据项目需求调整命名风格,但遵循统一规范能提升可读性。

良好的命名是最能够体现代码风格的行为之一,好的命名能够让你仅通过符号名,你就可以知道这个符号名代表着什么,到底是变量、常量、函数、类?随着代码规模增长,合理的命名习惯有助于提高可读性和维护性,使代码更加清晰易懂。

命名的核心作用是提高可读性,所以除了那些广为人知的缩写外,命名应尽量避免缩写的使用。此外,如果现有信息可以简单的得出符号所代表的含义的话,命名应避免不必要的冗长。

File Names

文件名应当采用全小写的 snake case convention,每个单词使用 -- 间隔开。比如:

my-file.cpp
my_file.cpp
my_file_test.cpp

此外,当命名头文件时,应当避免与已经存在的文件名冲突( /usr/include 中的头文件)。

Variable Names

对于局部变量和全局变量的命名,一律使用小写+下划线的方式,也就是 snake case。

int my_value;
std::string my_string;

对于类内的成员变量,一律在变量名后加上 _ ,如:

class MyClass {
private:
	int class_value_;
	std::string string_name_;
};

无论是类外的静态变量还是类内的静态变量,其命名都遵循全局变量的命名方式。

如果变量名是常量,则以 k 开头,遵循 camel case convention:

static const int kMyInteger = 10;
const std::string kMyString = "Hello";

Class Names

对于类类型的命名,一律使用大写驼峰命名方式(即 PascalCase),第一个字母大写的驼峰命名法:

class MyClass {};
struct MyData {};
union MyUnion {};

Function Names

函数命名同样适用类似类类型的命名方式——大写驼峰命名。如:

int GetUserId() {}
void PrintData() {}

Namespaces

命名空间的命名采用 snake case convention。

Enumeration

采用大写驼峰命名,如:

enum ThreadState {
	JOINABLE,
	DETACHED,
	FINISHED,
	UNCREATED	
};

Macro

宏使用全大写+下划线的方式,如:

#define MAX_BUFFER_SIZE 1024

Templates

模板参数使用 T 开头的大写驼峰命名:

template <typename TData>
class Container {};