cpp编程规范
高质量 C++ 编程规范:告别烂代码,养成工程级编码思维
前言
很多人觉得 C++ 难,难的从来不是语法,而是规范。
C++ 是一门自由度极高、兼容 C 语言、同时面向对象、支持泛型编程的重型语言。它允许你写出极简高效的高性能代码,也允许你写出混乱、内存泄漏、可读性极差的“垃圾代码”。
语法决定代码能不能跑,规范决定代码能不能维护、能不能迭代、能不能上线。
无论是课程作业、算法竞赛、后端开发、游戏开发、嵌入式开发,统一、干净、安全的 C++ 编码规范,是从“会写代码”到“会工程开发”的核心分水岭。
今天这篇博文,我整理了通用、现代、工程化、易落地的 C++ 编程规范,覆盖命名、格式、语法、内存、安全、STL、面向对象、项目结构,适合所有初学者和初级开发者长期遵守。
一、总体核心编码原则(所有规范的底层逻辑)
所有 C++ 编码规范,归根结底只有 4 条核心准则:
1. 可读性优先:代码首先是写给人看的,其次才是给机器跑的。
2. 最小风险原则:能避免野指针、内存泄漏、未定义行为的写法,优先使用。
3. 现代 C++ 优先:能用 STL、智能指针、const、引用,绝不写 C 风格烂代码。
4. 简洁无冗余:不重复造轮子、不写无效代码、不写晦涩炫技代码。
二、命名规范(最直观、最影响观感)
- 统一命名风格
- 变量、函数:小驼峰 userAge 、 getUserInfo
- 类、结构体:大驼峰 Student 、 GameManager
- 常量、宏定义:全大写下划线 MAX_SIZE 、 PI
- 全局变量:前缀 g_ 区分 g_config (尽量少用全局变量)
- 私有成员变量:后缀 _ 区分 name_ 、 score_
- 命名硬性要求
1. 见名知意:禁止 a、b、c、temp、data 模糊命名
2. 禁止拼音命名:杜绝 xueHao、chengJi
3. 动词+名词命名函数: getXXX / setXXX / calcXXX / judgeXXX
4. 布尔变量带语义: isValid、hasData、isRunning
反面教材
正面教材
三、代码格式规范(统一整洁、团队协作必备)
- 缩进与空格
- 统一 4 空格缩进,禁止 Tab 与空格混用
- 运算符前后加空格: a + b 、 num > 0
- 逗号后必须加空格: func(1, 2, 3)
- 大括号风格(统一 Allman 风格)
所有大括号单独成行,不贴行,可读性极强,工程通用
- 单行代码限制
- 一行只写一条语句
- 禁止 if、for 不写大括号(极易埋坑)
禁止写法
四、变量与数据类型规范(规避 80% 低级 bug)
- 变量就近定义
用到再定义,不全部堆在函数开头,减少变量作用域,降低出错概率
- 优先使用 const
能 const 必 const,锁定只读数据,防止误修改、提升编译器优化
- 只读变量加 const
- 只读成员函数加 const
- 函数入参只读优先 const &
- 杜绝裸指针滥用
- 普通动态内存,优先 shared_ptr / unique_ptr
- 裸指针只用于底层交互、硬件、算法高性能场景
- 禁止手动 new 不 delete,杜绝内存泄漏
五、函数编写规范
- 函数职责单一
一个函数只做一件事
- 不要一个函数既计算、又打印、又存文件
- 复杂逻辑拆分为多个子函数
- 参数设计规范
1. 大数据传参: const 引用
2. 小数据传参:值传递
3. 输出结果优先返回值,少用输出型参数
- 函数长度限制
单个函数尽量控制在 50 行以内
超长函数 = 逻辑混乱、极难调试
六、面向对象 C++ 类编写规范
- 访问权限规范
- 成员变量 全部私有 private
- 对外接口 public
- 复用工具函数 protected
- 初始化规范
1. 优先初始化列表初始化,不写构造内赋值
2. 禁止成员变量未初始化
- 三/五法则
涉及动态内存、指针的类:
必须手动实现 构造、拷贝构造、赋值重载、析构、移动构造,或明确禁用,杜绝浅拷贝崩程序。
七、现代 C++ 强制优先规范(告别 C 语言陋习)
- 禁止使用 C 风格数组
改用 vector 、 array ,自动管理内存、越界安全、可迭代
- 禁止手动 malloc / free
全部使用 new/delete 或智能指针
- 字符串优先 string,不使用 char*
杜绝字符串越界、乱码、内存崩溃问题
- 循环优先范围 for、迭代器
八、内存与安全规范(C++ 最核心痛点)
1. 杜绝野指针、悬空指针,指针使用前判空
2. new 和 delete 成对出现,智能指针无需手动释放
3. 禁止数组越界、字符串溢出
4. 禁止返回局部变量指针/引用(经典致命错误)
5. 多线程场景禁止裸读写共享变量,必须加锁
九、注释规范
- 注释原则
注释解释“为什么”,不解释“是什么”
代码能看懂的不注释,逻辑复杂、业务规则必须注释
- 规范注释格式
- 类、函数头部写功能、参数、返回值说明
- 复杂算法、特殊处理单独注释
- 禁止冗余废话注释
优秀注释示例
十、项目工程规范
1. 头文件禁止循环包含,所有头文件加头文件保护
2. 头文件放声明,源文件放实现
3. 项目分层:数据层、工具层、业务层、入口层,不混写
十一、写在最后:规范的真正意义
很多新手觉得“规范麻烦、浪费时间”。
但真实工程开发中:
90% 的 bug 来自不规范代码,90% 的维护成本来自混乱代码。
C++ 之所以难精通,不是语法多,而是容错极低、自由度太高、坑极多。
严格遵守编码规范,你可以:
- 彻底杜绝内存泄漏、野指针、越界崩溃
- 代码可读性拉满,适合团队协作
- 养成工程思维,适配后端、游戏、嵌入式所有岗位
- 面试代码题、项目展示直接吊打普通学生
规范不是束缚,是高级开发者的底层能力。
浙公网安备 33010602011771号