命名规范
基本原则
- 使用描述性名称,避免缩写
- 遵循驼峰命名法或下划线命名法,保持一致性
- 宏和枚举值使用全大写加下划线
示例:
// 变量命名
int studentCount; // 驼峰式
double average_score; // 下划线式
// 类命名
class DataProcessor; // 帕斯卡命名法
// 常量命名
const int MAX_RETRIES = 5;
格式规范
基本原则
- 使用4空格缩进,避免制表符
- 大括号使用Allman风格(单独一行)
- 每行代码不超过120个字符
- 操作符周围添加空格
示例:
// 正确格式
void processData(const vector<int>& data)
{
if (data.empty())
{
return;
}
for (auto& item : data)
{
item = transform(item * 2 + 5);
}
}
函数设计
基本原则
- 函数不超过50行(理想情况不超过20行)
- 参数不超过5个,过多时使用结构体封装
- 避免输出参数,优先使用返回值
- 使用const引用传递大型对象
示例:
// 良好设计的函数
std::string formatName(const std::string& firstName,
const std::string& lastName)
{
return lastName + ", " + firstName;
}
// 避免
void calculateResults(const DataSet& data,
ResultContainer& outResults);
类与对象
基本原则
- 遵循RAII原则(资源获取即初始化)
- 类成员变量使用m_前缀或下划线后缀
- 公开接口使用PascalCase,私有成员使用camelCase
- 优先使用组合而不是继承
示例:
class FileHandler
{
public:
explicit FileHandler(const std::string& filename)
: m_filename(filename)
{
m_file.open(filename);
}
~FileHandler()
{
if (m_file.is_open())
{
m_file.close();
}
}
std::string readAll()
{
// 读取文件内容
}
private:
std::string m_filename;
std::ifstream m_file;
};
内存管理
基本原则
- 优先使用智能指针(unique_ptr/shared_ptr)
- 避免使用裸new/delete
- 使用RAII管理所有资源
- 禁止返回裸指针或引用指向局部对象
示例:
// 使用智能指针
auto dataProcessor = std::make_unique<DataProcessor>();
// 传递所有权
std::unique_ptr<Result> process()
{
auto result = std::make_unique<Result>();
// 处理结果
return result;
}
// 避免
int* createArray(int size)
{
return new int[size]; // 调用者必须记得delete[]
}