cpp编程规范

高质量 C++ 编程规范:告别烂代码,养成工程级编码思维

前言

很多人觉得 C++ 难,难的从来不是语法,而是规范。

C++ 是一门自由度极高、兼容 C 语言、同时面向对象、支持泛型编程的重型语言。它允许你写出极简高效的高性能代码,也允许你写出混乱、内存泄漏、可读性极差的“垃圾代码”。

语法决定代码能不能跑,规范决定代码能不能维护、能不能迭代、能不能上线。

无论是课程作业、算法竞赛、后端开发、游戏开发、嵌入式开发,统一、干净、安全的 C++ 编码规范,是从“会写代码”到“会工程开发”的核心分水岭。

今天这篇博文,我整理了通用、现代、工程化、易落地的 C++ 编程规范,覆盖命名、格式、语法、内存、安全、STL、面向对象、项目结构,适合所有初学者和初级开发者长期遵守。

一、总体核心编码原则(所有规范的底层逻辑)

所有 C++ 编码规范,归根结底只有 4 条核心准则:

1. 可读性优先:代码首先是写给人看的,其次才是给机器跑的。
2. 最小风险原则:能避免野指针、内存泄漏、未定义行为的写法,优先使用。
3. 现代 C++ 优先:能用 STL、智能指针、const、引用,绝不写 C 风格烂代码。
4. 简洁无冗余:不重复造轮子、不写无效代码、不写晦涩炫技代码。

二、命名规范(最直观、最影响观感)

  1. 统一命名风格
  • 变量、函数:小驼峰  userAge 、 getUserInfo
  • 类、结构体:大驼峰  Student 、 GameManager
  • 常量、宏定义:全大写下划线  MAX_SIZE 、 PI
  • 全局变量:前缀 g_ 区分  g_config (尽量少用全局变量)
  • 私有成员变量:后缀 _ 区分  name_ 、 score_
  1. 命名硬性要求

1. 见名知意:禁止  a、b、c、temp、data  模糊命名
2. 禁止拼音命名:杜绝  xueHao、chengJi 
3. 动词+名词命名函数: getXXX / setXXX / calcXXX / judgeXXX 
4. 布尔变量带语义: isValid、hasData、isRunning

反面教材

正面教材

三、代码格式规范(统一整洁、团队协作必备)

  1. 缩进与空格
  • 统一 4 空格缩进,禁止 Tab 与空格混用
  • 运算符前后加空格: a + b 、 num > 0
  • 逗号后必须加空格: func(1, 2, 3)
  1. 大括号风格(统一 Allman 风格)

所有大括号单独成行,不贴行,可读性极强,工程通用

  1. 单行代码限制
  • 一行只写一条语句
  • 禁止  if、for  不写大括号(极易埋坑)

禁止写法

四、变量与数据类型规范(规避 80% 低级 bug)

  1. 变量就近定义

用到再定义,不全部堆在函数开头,减少变量作用域,降低出错概率

  1. 优先使用 const

能 const 必 const,锁定只读数据,防止误修改、提升编译器优化

  • 只读变量加  const
  • 只读成员函数加  const
  • 函数入参只读优先  const &

  1. 杜绝裸指针滥用
  • 普通动态内存,优先  shared_ptr / unique_ptr
  • 裸指针只用于底层交互、硬件、算法高性能场景
  • 禁止手动 new 不 delete,杜绝内存泄漏

五、函数编写规范

  1. 函数职责单一

一个函数只做一件事

  • 不要一个函数既计算、又打印、又存文件
  • 复杂逻辑拆分为多个子函数
  1. 参数设计规范

1. 大数据传参: const 引用 
2. 小数据传参:值传递
3. 输出结果优先返回值,少用输出型参数

  1. 函数长度限制

单个函数尽量控制在 50 行以内
超长函数 = 逻辑混乱、极难调试

六、面向对象 C++ 类编写规范

  1. 访问权限规范
  • 成员变量 全部私有 private
  • 对外接口 public
  • 复用工具函数 protected
  1. 初始化规范

1. 优先初始化列表初始化,不写构造内赋值
2. 禁止成员变量未初始化

  1. 三/五法则

涉及动态内存、指针的类:
必须手动实现 构造、拷贝构造、赋值重载、析构、移动构造,或明确禁用,杜绝浅拷贝崩程序。

七、现代 C++ 强制优先规范(告别 C 语言陋习)

  1. 禁止使用 C 风格数组

改用  vector 、 array ,自动管理内存、越界安全、可迭代

  1. 禁止手动 malloc / free

全部使用 new/delete 或智能指针

  1. 字符串优先 string,不使用 char*

杜绝字符串越界、乱码、内存崩溃问题

  1. 循环优先范围 for、迭代器

八、内存与安全规范(C++ 最核心痛点)

1. 杜绝野指针、悬空指针,指针使用前判空
2. new 和 delete 成对出现,智能指针无需手动释放
3. 禁止数组越界、字符串溢出
4. 禁止返回局部变量指针/引用(经典致命错误)
5. 多线程场景禁止裸读写共享变量,必须加锁

九、注释规范

  1. 注释原则

注释解释“为什么”,不解释“是什么”
代码能看懂的不注释,逻辑复杂、业务规则必须注释

  1. 规范注释格式
  • 类、函数头部写功能、参数、返回值说明
  • 复杂算法、特殊处理单独注释
  • 禁止冗余废话注释

优秀注释示例

十、项目工程规范

1. 头文件禁止循环包含,所有头文件加头文件保护

2. 头文件放声明,源文件放实现
3. 项目分层:数据层、工具层、业务层、入口层,不混写

十一、写在最后:规范的真正意义

很多新手觉得“规范麻烦、浪费时间”。

但真实工程开发中:
90% 的 bug 来自不规范代码,90% 的维护成本来自混乱代码。

C++ 之所以难精通,不是语法多,而是容错极低、自由度太高、坑极多。
严格遵守编码规范,你可以:

  • 彻底杜绝内存泄漏、野指针、越界崩溃
  • 代码可读性拉满,适合团队协作
  • 养成工程思维,适配后端、游戏、嵌入式所有岗位
  • 面试代码题、项目展示直接吊打普通学生

规范不是束缚,是高级开发者的底层能力。

posted @ 2026-10-12 20:24  breathing1234  阅读(5)  评论(0)    收藏  举报