|
@@ -0,0 +1,102 @@
|
|
|
|
+命名规范
|
|
|
|
+
|
|
|
|
+### C++ 命名规范
|
|
|
|
+
|
|
|
|
+C++ 命名规范有助于提高代码可读性、可维护性和团队协作效率。下面是常见的 C++ 命名规范建议,分为多个维度:
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 🧱 一、基础命名风格
|
|
|
|
+
|
|
|
|
+| 类型 | 命名风格 | 示例 |
|
|
|
|
+| ----------------- | -------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
|
|
+| **变量** | `lowerCamelCase` | `userName`, `totalCount` |
|
|
|
|
+| **函数** | `lowerCamelCase` | `calculateTotal()`, `printReport()` |
|
|
|
|
+| **类 / 结构体** | `UpperCamelCase`(PascalCase) | `User`, `AccountManager` |
|
|
|
|
+| **常量 / 宏定义** | `ALL_CAPS_WITH_UNDERSCORES` | `MAX_BUFFER_SIZE`, `PI` |
|
|
|
|
+| **命名空间** | `lowercase_with_underscores` 或 `CamelCase` | `network_utils`, `MyProject` |
|
|
|
|
+| **枚举类型** | `UpperCamelCase`(类名) + 枚举值 `UPPER_CASE` 或 `kCamelCase` | `enum class Color { RED, GREEN };` 或 `enum class Color { kRed, kGreen };` |
|
|
|
|
+| **模板类型参数** | `PascalCase` | `template<typename T>` |
|
|
|
|
+| **私有成员变量** | `m_` 前缀或 `_` 后缀 | `m_value` 或 `value_` |
|
|
|
|
+| **静态成员变量** | `s_` 前缀 | `s_instance` |
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 📦 二、作用域相关命名
|
|
|
|
+
|
|
|
|
+- **避免使用全局变量**,推荐封装到命名空间或类中。
|
|
|
|
+- 命名空间应避免与标准库命名冲突,例如不要叫 `std`、`string` 等。
|
|
|
|
+- 使用命名空间分组功能模块,例如:
|
|
|
|
+
|
|
|
|
+ ```cpp
|
|
|
|
+ namespace app {
|
|
|
|
+ namespace logging {
|
|
|
|
+ void logInfo(const std::string&);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ```
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 📘 三、类与成员命名建议
|
|
|
|
+
|
|
|
|
+- 类名是名词,表示一个事物(如 `User`, `DatabaseConnection`)。
|
|
|
|
+- 方法名是动词或动词短语(如 `loadData()`, `sendRequest()`)。
|
|
|
|
+- 构造函数和析构函数使用类名命名,如 `User()` 和 `~User()`。
|
|
|
|
+- 避免无意义缩写:`clntMgr` → `clientManager`
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 💡 四、枚举建议
|
|
|
|
+
|
|
|
|
+#### 方式一:传统枚举(C++98 风格)
|
|
|
|
+
|
|
|
|
+```cpp
|
|
|
|
+enum Color {
|
|
|
|
+ COLOR_RED,
|
|
|
|
+ COLOR_GREEN,
|
|
|
|
+ COLOR_BLUE
|
|
|
|
+};
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+#### 方式二:强类型枚举(C++11 `enum class`,推荐)
|
|
|
|
+
|
|
|
|
+```cpp
|
|
|
|
+enum class Color {
|
|
|
|
+ Red,
|
|
|
|
+ Green,
|
|
|
|
+ Blue
|
|
|
|
+};
|
|
|
|
+Color c = Color::Red;
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+> ✅ 推荐使用 `enum class` 来避免命名污染
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 🔐 五、文件和命名约定
|
|
|
|
+
|
|
|
|
+| 类型 | 示例 |
|
|
|
|
+| ------------------------------ | ---------------------------------- |
|
|
|
|
+| `.h/.hpp` 文件 | `user_manager.h`, `math_utils.hpp` |
|
|
|
|
+| `.cpp` 文件 | `user_manager.cpp` |
|
|
|
|
+| include guard(C++11 前) | `#ifndef USER_MANAGER_H` |
|
|
|
|
+| `#pragma once`(C++11+,推荐) | 顶部写 `#pragma once` |
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 🧼 六、命名习惯建议
|
|
|
|
+
|
|
|
|
+- 避免单字符变量(除 `i`, `j` 等循环计数)
|
|
|
|
+- 尽量语义明确,比如 `dataBuffer` 比 `buf` 更清晰
|
|
|
|
+- 不要过度缩写,`numEmployees` 优于 `numEmp`
|
|
|
|
+
|
|
|
|
+---
|
|
|
|
+
|
|
|
|
+### 🧰 七、团队风格标准(建议)
|
|
|
|
+
|
|
|
|
+可参考主流项目的命名规范,例如:
|
|
|
|
+
|
|
|
|
+- **Google C++ Style Guide**: [https://google.github.io/styleguide/cppguide.html](https://google.github.io/styleguide/cppguide.html)
|
|
|
|
+- **LLVM Coding Standards**
|
|
|
|
+- **Qt 命名风格**(变量带 `_` 后缀,如 `value_`)
|