ds-free-api / docs /code-style.md
heyeyydss's picture
Upload 154 files
69f686e verified
|
Raw
History Blame
2.26 kB
# 代码风格规范
## 注释风格
### 模块文档(//!)
- 第一行:模块职责 —— 具体描述
- 空行后:关键设计决策或限制
```rust
//! 账号池管理 —— 多账号负载均衡
//!
//! 1 account = 1 session = 1 concurrency
```
### 公有 API 文档(///)
- 使用动词开头:"返回"、"创建"、"发送"
- 明确副作用:"自动释放"、"清理 session"
- 标注 Panic 条件(如有)
```rust
/// 轮询获取一个空闲账号
///
/// 返回的 AccountGuard 在 Drop 时自动释放 busy 标记
pub fn get_account(&self) -> Option<AccountGuard>
```
### 行内注释(//)
- 解释"为什么"而非"做什么"
- 标注临时方案或外部依赖
```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!`