Parcourir la source

add naming convention reference doc

Yao il y a 1 mois
Parent
commit
1bd87dfb2e
1 fichiers modifiés avec 102 ajouts et 0 suppressions
  1. 102 0
      NamingConvention.md

+ 102 - 0
NamingConvention.md

@@ -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_`)