| name | enforce-coding |
| description | 编写或修改任何 C++ 代码时必须遵循此规范。 |
Skill: C++ 编码规范
触发条件
编写或修改任何 C++ 代码时必须遵循此规范。
优先级声明:本项目(Prism)的编码规范以本 skill 为准。用户级通用 C++ 规范(如 cpp-code-rules、cpp-doxygen-comment)与本规范冲突时,以本规范为准。关键差异:行宽 200 字符(非 100)、函数体 120 行(非 100)、include 顺序(项目 → 第三方 → 标准库)、禁止 std::mutex(协程架构)、Doxygen 仅限 .hpp 文件(非全部 C++ 文件)。
1. 函数参数上限
规则:函数参数不超过 3 个。 超过 3 个时必须用结构体收敛。这个函数包括类里面的构造等所有函数
auto connect(const memory::string &host, std::uint16_t port, bool use_tls, std::uint32_t timeout)
-> net::awaitable<void>;
struct connect_options
{
memory::string host;
std::uint16_t port = 0;
bool use_tls = false;
std::uint32_t timeout_ms = 5000;
};
auto connect(connect_options opts)
-> net::awaitable<void>;
例外:第三方 C 库回调签名(无法修改)。
main() 函数
- 构造函数的成员初始化列表(但鼓励用结构体收敛配置参数)
审查清单
每次编写或修改 C++ 代码后,逐项检查:
规则详情(按需加载)
- 语义规则(命名规范 2、函数体 3、头文件 4、注释 5、返回类型 6、nodiscard 7、PMR 8、using 9、auto 10-11、const 12、错误处理 13、lambda 14、头文件保护 15、TODO 16、访问排序 17、命名空间 18、override 19、构造函数 20、整数类型 21、成员访问 22、类型安全 23)详见 semantic-rules.md。
- 类型系统规则(struct/class 24、enum 25、智能指针 26、noexcept 27、特殊成员 28、nullptr 29、constexpr 30、初始化 31、static 32、模板 33、move/forward 34)和格式化规范详见 type-and-style.md。
- 生命周期与资源安全审计(智能指针所有权、协程异步安全、迭代器容器安全、RAII、悬挂引用、PMR)详见 co-lifecycle-audit。