复现已有算法
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: cpp-coding-style
|
||||
description: C/C++ 代码风格规范。用于本仓库 C/C++ 新增、修改、重构时,统一格式、命名、include 顺序和现代 C++ 用法。
|
||||
---
|
||||
|
||||
# C/C++ 风格规范
|
||||
|
||||
## 基础约束
|
||||
|
||||
- 使用 `C++17`
|
||||
- 4 空格缩进
|
||||
- 大括号使用 K&R 风格
|
||||
- 单行长度尽量不超过 100
|
||||
|
||||
## 命名规则
|
||||
|
||||
- 类型(`class/struct/enum`):`PascalCase`
|
||||
- 函数/方法:`PascalCase`
|
||||
- 普通变量:`snake_case`
|
||||
- 成员变量:`snake_case_`
|
||||
- 常量:`kPascalCase`
|
||||
- 宏:`ALL_CAPS`
|
||||
- 命名空间:小写
|
||||
|
||||
## include 顺序
|
||||
|
||||
1. 对应头文件
|
||||
2. C 系统头
|
||||
3. C++ 标准库
|
||||
4. 第三方库
|
||||
5. 项目内头文件
|
||||
|
||||
组间空一行。
|
||||
|
||||
## 代码习惯
|
||||
|
||||
- 单行 `if/for/while` 也加大括号
|
||||
- 不使用 `using namespace std;`
|
||||
- 优先 `constexpr`、`[[nodiscard]]`、RAII
|
||||
- 优先 `static_cast`,避免 C 风格强转
|
||||
- `auto` 只在不降低可读性时使用
|
||||
|
||||
## 注释与日志
|
||||
|
||||
- 注释优先说明"为什么",不是"做了什么"
|
||||
- 保留高价值中文注释,不随手删除
|
||||
- 强制包含 `#include "logger/Logger.hpp"`(或其相对路径)
|
||||
- **统一使用流式日志宏**:`LOG_DEBUGS()`、`LOG_INFOS()`、`LOG_WARNS()`、`LOG_ERRORS()`,通过 `<<` 拼接内容。严禁使用 `std::cerr`/`std::cout`、第三方日志原生接口或混用其他宏。
|
||||
```cpp
|
||||
// 正确:流式
|
||||
LOG_ERRORS() << "SerialTransport: 无法打开串口 " << port_ << ": " << strerror(errno);
|
||||
// 错误:传参格式
|
||||
LOG_ERRORS("SerialTransport: 无法打开串口 {}: {}", port_, strerror(errno));
|
||||
// 错误:原生输出
|
||||
std::cerr << "SerialTransport: 无法打开串口" << std::endl;
|
||||
```
|
||||
- 日志风格沿用同模块既有前缀和语气
|
||||
Reference in New Issue
Block a user