我的C++代码规范
1 命名
- 文件:全小写,下划线分隔
user_util.hpp/user_util.cpp - 类 / 结构体 / 枚举:大驼峰
UserManager - 函数 / 局部变量 / 参数:小驼峰
getUserInfo - 类成员:
m_+ 小驼峰m_userName - 全局变量:尽量不用;必须用则
g_前缀 - 常量 / 宏:全大写 + 下划线
MAX_LEN - 命名空间:小写下划线;禁止
using namespace std;
2 格式
- 缩进:4 空格,禁用 Tab
- 行宽:≤120 字符
- 大括号:Allman 风格,独占一行;单行 if/for 也要加大括号
- 头文件包含顺序:本 hpp → 项目内头文件 → 第三方库 → 标准库 → C 库,各组空一行
- 文件末尾保留空行,不允许多连续空行
3 头文件
- 头文件保护:
#pragma once - 头文件只写声明,模板 /inline 除外;多用前置声明减少 include
- 不要在头文件定义全局变量
4 类 & 函数
- 类访问顺序:
public→protected→private - 单参数构造加
explicit;基类虚析构 - 优先初始化列表;遵循 const 正确性,不修改就加
const - 函数短小,单一职责;参数≤5 个,过多封装结构体
- 参数:小类型传值,对象传
const&;优先返回值而非输出参数 - 虚函数加
override;优先组合,少用继承
5 现代 C++
- 内存:优先
unique_ptr,共享所有权才用shared_ptr;用make_unique/make_shared,少裸new/delete - 枚举:一律
enum class强类型枚举 - 可用
auto简化类型,但不要滥用 - 范围 for 遍历容器;优先 STL 算法
- 用
std::optional表达空值,替代裸指针返回
6 注释
- 注释解释为什么,不要复述代码做什么
- 对外接口写 Doxygen 注释;内部复杂逻辑加简短注释
- 废弃代码直接删除,不要注释屏蔽
7 安全与错误
- 不用危险 C 函数:
strcpy、sprintf - 数组访问注意越界;指针使用前判空
- 业务错误优先返回错误码;异常仅用于极端错误
- 断言只用于内部校验,不能校验外部输入

浙公网安备 33010602011771号