我的 C++ 编码规范
在平时写 C++ 课程作业和数据结构代码时,我会遵守一套自己的编码规范,用来保持代码整洁,减少 bug,方便自己阅读、调试,也方便和同学互相查看代码。这套规范偏向日常练习使用,覆盖格式、命名、注释、变量与类型选择、函数编写、内存和代码容错这些基础方面。
代码格式上,我统一用 4 个空格来缩进,不使用 Tab 键,防止在不同编辑器打开时代码排版乱掉。一行代码不要写得太长,如果判断条件或者函数参数太多,就换行分开写。运算符两边、if、for、while 这些关键字后面都要加上空格,大括号对齐摆放。代码块之间用空行隔开,把变量定义、循环逻辑、内存释放等不同部分分开。比如写顺序表或者链表代码时,能一眼分清哪部分是边界判断,哪部分是元素操作,不会一大段代码挤在一起。
命名方面坚持见名知意,全部用英文命名,不使用拼音或者简单的 a、b、tmp 这类看不出含义的名字。普通变量和函数用小驼峰,例如“listLength”代表链表长度,“insertNode”代表插入节点的函数。结构体和类名使用大驼峰,像“ListNode”、“SeqList”。固定不变的常量全部大写,单词之间用下划线隔开,比如“MAX_SIZE”。这样不用额外解释,就能看懂变量和函数的用途。
写注释有简单的规则,不写多余废话,也不能完全没有注释。注释主要用来写特殊情况和思路,而不是逐行复述代码。每个自定义函数开头简单写清楚这个函数做什么、参数是什么。写链表、顺序表这类代码时,重点标注容易出错的边界情况,比如链表为空、删除头节点的场景。如果后面修改了代码,对应的注释也要同步更新,避免注释和实际代码不一致。简单的赋值、循环语句就不用额外加注释,保持代码清爽。
变量和数据类型选择上,我会根据数值范围挑选合适的类型,避免数据溢出。普通较小的整数可以用 int,但如果计算结果可能很大,比如求和、统计大数、做算法题累加时,就优先选用“long long”类型存储变量。不会全部都用 int,防止计算过程中数值超出 int 上限,出现溢出、结果出错的问题。同时变量尽量在靠近使用的位置定义,不要在代码最开头一次性定义一大堆变量,方便阅读,也减少变量误用。
写基础代码和函数的时候,坚持一个函数只完成一件事,不会把所有代码全部堆在 main 函数里面。写链表代码,就把创建节点、插入、遍历、销毁拆成独立的函数;写顺序表,把初始化、插入、删除分开。函数传参时,如果只是读取数据而不修改,就加上 const 保护原始数据,避免不小心改动内容。尽量少用全局变量,全局变量容易在不经意间被修改,带来难以排查的 bug。
内存管理是 C++ 里很重要的一点,也是写链表、二叉树时经常要注意的。使用 new 开辟内存,就要用 delete 释放;new [] 开辟数组,就要用 delete [] 释放。定义指针的时候初始化为 nullptr,释放内存之后,也要把指针置空,防止出现野指针。访问数组或者链表节点前,先检查下标是否合法、指针是不是空,避免空指针访问、数组越界导致程序崩溃。写完动态结构代码,一定要写销毁函数,循环释放所有节点,防止内存泄漏。
同时代码要考虑异常情况,不能只考虑正常输入。处理链表、顺序表的时候,提前判断空表、非法下标等情况,做好兜底判断,防止程序遇到特殊输入直接崩溃。写代码只保留正式需要的内容,写完之后删掉调试用的打印语句,保证最终代码干净整洁。引用头文件按需添加,不引入不需要的头文件,减少多余编译内容。
在日常练习中,我一直按照这套规范编写代码。规范的代码更容易找到 bug,后续回看代码也能快速理解当时的思路。这套规范也方便和别人一起协作阅读代码。我也会持续坚持这些习惯,把规范融入每一次写 C++ 代码的过程。
浙公网安备 33010602011771号