## 通用命名规范
函数命名、变量命名、文件命名要有描述性,少用缩写。
### 文件命名
文件名要全部小写, 可以包含下划线 (`_`) 或连字符 (`-`),依照项目的约定。如果没有约定, 那么 `_` 更好。
### 类型命名
类型名称的每个单词首字母均大写, 不包含下划线。
### 变量命名
变量 (包括函数参数) 和数据成员名一律小写,单词之间用下划线连接。类的成员变量以下划线结尾,但结构体的就不用。
### 常量命名
声明为 `constexpr` 或 `const` 的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合。
```C++
const int kAWeek = 7;
```
### 函数命名
常规函数使用大小写混合, 取值和设值函数则要求与变量名匹配。
```c++
AddTableEntry();
DeleteUrl();
get_my_value();
set_my_value();
```
### 命名空间命名
命名空间以小写字母命名. 最高级命名空间的名字取决于项目名称. 要注意避免嵌套命名空间的名字之间和常见的顶级命名空间的名字之间发生冲突.
顶级命名空间的名称应当是项目名或者是该命名空间中的代码所属的团队的名字. 命名空间中的代码, 应当存放于和命名空间的名字匹配的文件夹或其子文件夹中。
要避免嵌套的命名空间与常见的顶级命名空间发生名称冲突。由于名称查找规则的存在,命名空间之间的冲突完全有可能导致编译失败。尤其是,不要创建嵌套的 `std` 命名空间。建议使用更独特的项目标识符 (`websearch::index`, `websearch::index_util`) 而非常见的极易发生冲突的名称 (比如 `websearch::util`) 。
### 枚举命名
枚举命名与常量或者宏命名保持一致。
2009 年 1 月之前, 我们一直建议采用宏的方式命名枚举值. 由于枚举值和宏之间的命名冲突, 直接导致了很多问题. 由此, 这里改为优先选择常量风格的命名方式. 新代码应该尽可能优先使用常量风格. 但是老代码没必要切换到常量风格, 除非宏风格确实会产生编译期问题。
```C++
enum UrlTableErrors {
kOS = 0,
kErrorOutOfMemory,
kErrorMalformedInput
};
enum AlternaterUrlTabelErrors {
OS = 0,
OUT_OF_MEMORY = 1,
INPUT = 2,
OUTPUT = 4
};
```
### 宏命名
通产不应该使用宏,如果不得不用,用全大写和下划线命名。
```C++
#define ROUND(x)
#define PI_ROUND 3.14
```