我的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
  • 数组访问注意越界;指针使用前判空
  • 业务错误优先返回错误码;异常仅用于极端错误
  • 断言只用于内部校验,不能校验外部输入
posted @ 2026-10-11 22:07  KaiserGuttoso  阅读(2)  评论(0)    收藏  举报