# 代码风格规范 ## 注释风格 ### 模块文档(//!) - 第一行:模块职责 —— 具体描述 - 空行后:关键设计决策或限制 ```rust //! 账号池管理 —— 多账号负载均衡 //! //! 1 account = 1 session = 1 concurrency ``` ### 公有 API 文档(///) - 使用动词开头:"返回"、"创建"、"发送" - 明确副作用:"自动释放"、"清理 session" - 标注 Panic 条件(如有) ```rust /// 轮询获取一个空闲账号 /// /// 返回的 AccountGuard 在 Drop 时自动释放 busy 标记 pub fn get_account(&self) -> Option ``` ### 行内注释(//) - 解释"为什么"而非"做什么" - 标注临时方案或外部依赖 ```rust // 顺序很重要:health_check 必须在 update_title 之前, // 否则空 session 会导致 EMPTY_CHAT_SESSION 错误 ``` ## 命名规范 | 类型 | 风格 | 示例 | |------|------|------| | 模块/文件 | snake_case | `ds_core`, `accounts.rs` | | 类型/结构体 | PascalCase | `AccountPool`, `CoreError` | | 函数/方法 | snake_case | `get_account()`, `compute_pow()` | | 常量 | SCREAMING_SNAKE_CASE | `ENDPOINT_USERS_LOGIN` | | 枚举变体 | PascalCase | `AllAccountsFailed` | ## 错误消息 - **中文**:配置验证、账号管理等面向用户的错误消息使用中文 - **英文**:内部库错误(`ds_core`、`client`、`adapter`、`anthropic_compat`)使用英文,供开发者调试 - 包含上下文:"账号 {} 初始化失败" - 避免泄露敏感信息(token 只打印前8位) - 服务器层的 `ServerError::Display` 向 API 客户端展示错误时,保持适配器原始消息不变 ## 枚举变体命名 - 所有枚举变体使用 PascalCase(如 `AllAccountsFailed`、`BadRequest`) - 仅在 serde 序列化时通过 `#[serde(rename = "...")]` 使用非 PascalCase ## 日志规范 见 `docs/logging-spec.md` ## 导入分组 1. 标准库 (`std::`) 2. 第三方库 (`tokio::`, `wreq::`) 3. 内部模块 (`crate::`) 4. 本地 use (super, self) 组间空行分隔。 ## 测试代码规范 - 测试函数内部允许使用 `println!` 输出中间结果,便于失败时观测解析内容 - 库代码(`src/` 非 `#[cfg(test)]` 区域)仍禁止直接使用 `println!` / `eprintln!`