Files
wk-backend/codestable/reference/code-dimensions.md
zhilv 2a6732ffe7 fix: 修复6个bug并接入CodeStable工作流
Bug修复:
- GetWorkList 使用了错误的 RecordType (RecordStudy→RecordWork)
- AllRecord handler 返回错误的分页信息 (page硬编码1, pageSize用RecordsCount)
- CourseParse creditNode nil panic (加nil检查)
- WebSocket CheckOrigin 安全漏洞 (release模式限制为同源)
- math/rand 可预测 (替换为 crypto/rand)
- GetDiscussList 未实现 (补全实现, 移除重复路由)

其他:
- 接入 CodeStable 工作流体系 (codestable/ 骨架 + AGENTS.md)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-25 19:55:57 +08:00

98 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代码维度速查
写代码前先确认每个维度的档位。没明说的走默认,偏离默认的地方要标出来让用户确认。
这份文档是 CodeStable 子技能共享的口径,被 design / fastforward / issue-fix 等阶段引用。项目内的权威副本在 `codestable/reference/code-dimensions.md`,由 `cs-onboard` 从技能包释放。
---
## 核心四维(每次都要定)
### 健壮性 Robustness —— 错误处理的严苛程度
- **L1 快跑**happy path 跑通就行,异常直接崩、让它炸。适合一次性脚本、探索代码。
- **L2 够用**:捕获预期错误(文件不存在、网络超时),非预期错误往上抛。适合内部工具。
- **L3 严防**:所有外部输入验证、所有失败路径都有明确处理、关键操作幂等可重试。适合对外接口、生产系统。
### 结构 Structure —— 代码组织的颗粒度
- **inline**:全写在一起,十几行搞定的那种。
- **functions**:按职责拆函数,同一个文件内。
- **modules**:拆多个文件/模块,有明确的导入关系。
- **layers**:分层架构(如 handler / service / repository有依赖方向约束。
### 性能 Performance —— 对开销的关注度
- **careless**怎么方便怎么写O(n²) 也无所谓。
- **reasonable**:避开明显的坑(循环里查 DB、重复计算但不刻意优化。
- **budgeted**有明确的性能预算延迟、内存、QPS按预算设计数据结构和算法。
- **extreme**:榨性能,要 profiling、要基准测试、可以牺牲可读性。
### 可读性 Readability —— 写给谁看
- **self**:自己当下看得懂就行,命名可以随意。
- **team**:队友半年后还能快速上手,命名规范、关键处有注释。
- **public**:外部开发者能无背景读懂,公共 API 要有文档、示例。
- **teaching**:代码本身就是教材,每一步意图清晰、刻意展示模式。
---
## 场景维度(相关时才定)
### 可演进性 Evolvability —— 预期会怎么变
- **frozen**:接口锁死,不许改(如已发布的库 API
- **stable**:偶尔变,变动要走流程、要兼容。
- **active**:当前在迭代,接口随业务调整。
- **experimental**:随时推倒重来,不考虑向后兼容。
### 可观测性 Observability —— 运行时能看到多少
- **opaque**:黑盒,出了问题靠猜。
- **logged**:关键路径有日志,能事后翻查。
- **traced**:有链路追踪,跨服务能串起来。
- **instrumented**指标齐全metrics / traces / logs 三件套),可接告警。
### 可测试性 Testability —— 测试覆盖的深度
- **untested**:没测试。
- **testable**:结构支持测试(依赖可注入、副作用可隔离),但还没写。
- **tested**:有单元/集成测试覆盖主要路径。
- **verified**:核心逻辑有测试 + 关键不变量有断言/属性测试/形式化验证。
### 安全性 Security —— 信任边界
- **trusted**:全在可信环境内,不设防。
- **validated**:外部输入做校验和清洗。
- **sandboxed**权限最小化、危险操作隔离容器、subprocess 限权)。
- **hardened**:按对抗性环境设计,防注入/防越权/防侧信道,有威胁模型。
---
## 特殊维度(只在涉及时提)
- **Concurrency 并发**single-threaded / thread-safe / lock-free / distributed
- **Determinism 确定性**nondeterministic / reproducible / deterministic
- **Compatibility 兼容性**current-only / backward-compatible / cross-version
- **Idempotency 幂等性**non-idempotent / idempotent / exactly-once
---
## 常用默认组合
| 场景 | 组合 |
|---|---|
| 聊天里问的随手代码 | L1 + inline + careless + self + experimental |
| 项目内部工具 | L2 + functions + reasonable + team + active + logged + testable |
| 对外发布的库/服务 | L3 + modules + budgeted + public + stable + traced + tested + validated |
没明说就按场景走默认。动手前列出关键档位,偏离默认的地方明确标出来让用户确认。
---
## 怎么用这份文档
- **design / fastforward 起草时**AI 先按场景猜默认组合,把判断出的"可能偏离默认"的维度列出来问用户;用户没明确说的维度按默认走。只记偏离项,默认档位不抄。
- **implement / fix 写代码时**:翻一眼当前 feature 或 issue 记录的维度档位,按档位写。比如记了 `健壮性=L3` 就不要偷工省掉输入校验;记了 `可读性=public` 就得补示例和文档。
- **acceptance / review 时**:把维度档位当成验收标准的一部分——档位说 L3 但代码里外部输入没校验,就是不达标。