命名规范 ### 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` | | **私有成员变量** | `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_`)