一、C++编码规范
1. 命名规范
1.1 变量和函数
- 变量名和函数名应采用有意义的英文单词,避免使用缩写。
- 使用驼峰命名法(camelCase),首字母小写,例如:
totalCount
、calculateSum()
。 - 常量使用全大写加下划线,例如:
MAX_SIZE
。
1.2 类和结构体
- 类名和结构体名使用帕斯卡命名法(PascalCase),首字母大写,例如:
CustomerInfo
、DataProcessor
。
1.3 命名空间
- 命名空间名称使用小写字母,必要时可用下划线连接,例如:
std
、my_project
。
2. 代码格式
2.1 缩进和空格
- 使用四个空格作为缩进,不使用制表符(Tab)。
- 运算符两侧保留一个空格,例如:
a + b
。 - 函数参数列表中的逗号后添加一个空格,例如:
func(a, b, c)
。
2.2 括号和大括号
- 左大括号
{
不单独占一行,放在语句结尾。 - 右大括号
}
单独占一行,与对应的左大括号对齐。
if (condition) {
// code block
} else {
// code block
}
3. 注释规范
3.1 单行注释
- 使用
//
进行单行注释,放在被注释代码的上方或旁边。
// 初始化计数器
int count = 0;
3.2 多行注释
- 使用
/*...*/
进行多行注释。
/*
* 这是一个多行注释的示例。
* 可以在这里添加详细的说明。
*/
3.3 文档注释
- 使用
/**...*/
编写文档注释,便于生成文档。
/**
* 计算两个整数的和。
* @param a 整数a
* @param b 整数b
* @return a和b的和
*/
int add(int a, int b);
4. 代码规范
4.1 常量与宏
- 优先使用
const
、enum
、constexpr
等替代宏定义#define
。
4.2 指针和引用
- 指针符号
*
和引用符号&
尽量靠近变量名,例如:int *ptr
、int &ref
。
4.3 控制语句
- 避免在控制语句中使用赋值操作。
- 循环和条件语句必须使用花括号,即使代码块只有一行。
5. 异常和错误处理
- 使用异常来处理错误,而不是返回错误码。
- 捕获异常时,应尽可能指定具体的异常类型。
try {
// 可能抛出异常的代码
} catch (const std::exception &e) {
// 异常处理
}
6. 代码复用和模块化
- 遵循DRY(Don’t Repeat Yourself)原则,避免重复代码。
- 将公共代码提取为函数或类,提升代码的可维护性和可读性。
7. 文件组织
- 每个头文件
.h
或.hpp
只声明一个类或模块。 - 头文件应使用include guard或
#pragma once
防止重复包含。
#ifndef MY_CLASS_H
#define MY_CLASS_H
// 类的声明
#endif // MY_CLASS_H
8. 其他建议
- 避免使用魔术数字,使用命名常量代替。
- 定期重构代码,改善代码结构。
- 注重代码的可读性,避免过度优化导致代码难以理解。
二、《数学之美》第一章读后感
第一章讲了文字,数字和语言的历史,的确让我感受到了语言和数学天然的内在的联系,尤其是第一章结合了自然语言处理相关的知识,以及上下文的消歧等内容,恰与我现在在项目组做的内容相符合,因此对第一章有比较深的感触,特别是给了我一个全新的思考,即:到底是语言对还是语法对。在此之前我们一直在思考如何纠正语法或语义的错误,却没想过这样做是否是有绝对的意义的。