--- name: zhouyilab-cpp-style description: 编写 ZhouYiLab C++ 代码时落实性能、命名、枚举定义、成员注释和 WSL clang-format 规范。 --- ## 可读性与性能 - 性能与代码美感优先,但以正确性和清晰边界为前提。固定小域优先数组、枚举与只读定义表;已知数量的结果预留容量,避免循环中重复构建映射、重复查根和拼接无用字符串。 - 私有规则表和辅助函数放 `.cpp`,必要时使用匿名命名空间。仅在真实热点或稳定不变量处缓存;不要引入无界全局缓存、悬空 `string_view` 或为“零拷贝”破坏生命周期。 - 规则用稳定枚举/规则标识作键,不用散落的中文字符串驱动分支。显示名称复用 `ZhouYi.ZhMapper` 及所属领域映射,不另造通用枚举反射库。 - 文件名采用现有 `snake_case`,模块名沿用 `ZhouYi.*`;专业概念命名为排盘、原局、课体、卦象等对应语义,禁止泛称“事实层/事实项/事实依据”及含混的 `misc/partN` 拆分。 ## JavaDoc 风格注释 - 修改或新增的公共 enum、每个枚举值、struct/class、每个成员及公开函数均补中文 `/** ... */` 注释。字段说明含义、单位/范围、默认值语义;可选项说明未提供如何处理,数值区分分值、比例、规则权重。 - 函数用 `@brief`、`@param`、必要的 `@tparam`、`@return`、`@throws` 说明契约;不要机械为 void 写返回值或声称不会发生的异常。私有复杂公式说明依据、边界与不变量,简单语句不逐行翻译。 - 接口保留完整契约注释,实现只解释推演和算法原因。移动函数/枚举/结构时注释一起移动,不以格式化或拆文件为由丢弃注释。 例如成员应写清: ```cpp /** @brief 是否完成三合三支补齐;不代表已经成化。 */ bool complete = false; /** @brief 关系作用系数,范围 [0, 1];0 表示该作用未计入。 */ double effectiveness = 0.0; ``` ## 格式化 - 先查实际可用的 WSL 发行版与 `clang-format` 版本,再使用 WSL 的 Clang 格式化工具处理本次修改的 `.cppm`、`.cpp`;若不可用,说明未格式化,不假称已执行。 - 优先遵循仓库已有格式配置,无配置则延续邻近代码风格。只格式化本次相关文件,不顺手重排整个仓库或第三方库。 - 格式化后检查 `git diff --check` 与差异,确认中文编码、注释、模块声明及公共签名未受损。