写作与公文
编写或维护代码文档时,用 README、API 文档…
适用于为代码库、API、组件和架构决策编写或更新开发者文档的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
编写或维护代码文档时,用 README、通用
解决思路
- README 使用标准模板,以 `# Project Name` 开头,并写一句项目功能简介。
- README 添加 `## Quick Start`,放最小启动命令:`npm install` 和 `npm run dev`。
- README 添加 `## Installation`,写详细安装说明。
- README 添加 `## Usage`,放 TypeScript 用法示例,如 `import { something } from 'project'; const result = something.doThing();`。
- README 添加 `## API Reference`,用 `### functionName(param: Type): ReturnType` 格式描述函数作用。
- 在 API Reference 中列 `Parameters`,如 `param` - 参数描述;列 `Returns`,写返回值描述。
- 在 API Reference 中给 `Example`,如 `const result = functionName('value');`。
- README 添加 `## Configuration`,用表格列 Option、Type、Default、Description,例如 `option1`、`string`、`'default'`、说明。
- README 添加 `## Contributing`,写如何贡献。
- README 添加 `## License`,写 MIT。
- 使用 JSDoc/TSDoc 为函数写文档注释,包含描述、`@param userData`、`@param options`、`@returns`、`@throws {ValidationError}`、`@example`,示例 `const user = await createUser({ email: 'user@example.com', name: 'John' });`。
- 使用 JSDoc/TSDoc 为接口写文档注释,如 `ClientConfig` 的 `baseUrl`、`timeout`(`@default 5000`)、`headers` 字段。
- 使用 OpenAPI/Swagger 描述 API,顶层写 `openapi: 3.0.0`、`info.title`、`info.version`。
- 在 OpenAPI 的 `paths` 中定义端点,如 `/users` 的 `post`,写 `summary`、`description`、`requestBody`(`required: true`、`application/json`、`schema: $ref '#/components/schemas/UserInput'`)。
- 在 OpenAPI 中定义 `responses`,如 `'201'` 成功返回 `$ref '#/components/schemas/User'`,`'400'` 表示 Invalid input。
- 在 OpenAPI 的 `components.schemas` 定义模型,如 `UserInput`(必填 `email`、`name`,`email` format email、`name` string)和 `User`(`id`、`email`、`name`、`createdAt` format date-time)。
- 内联注释解释 WHY,不解释 WHAT:例如二分查找因为列表始终有序且可能包含百万项,O(log n) vs O(n)。
- 用内联注释解释复杂业务逻辑:如用户会员 2 年以上且购买 10+ 次时享 20% 折扣,依据 marketing team decision Q4 2024。
- 用内联注释记录 workaround:如 `HACK: Safari doesn't support this API, fallback to polling`,以及 `TODO: Remove when Safari adds support (tracking: webkit.org/b/12345)`。
- 不要写陈述显而易见的注释,如 `counter++` 前写 `// Increment counter by 1`。
- 不要解释清晰代码,如 `if (user.role === 'admin')` 前写 `// Check if user is admin`。
- 不要保留过期注释;过期注释比没有注释更糟,如注释说返回 full name 但实际返回 email。
- 使用 ADR 记录架构决策,标题格式如 `# ADR-001: Use PostgreSQL for Primary Database`。
- ADR 包含 `## Status`,如 Accepted。
- ADR 包含 `## Context`,写需要数据库存储用户和交易,以及考虑 PostgreSQL、MySQL、MongoDB、DynamoDB 等选项。
- ADR 包含 `## Decision`,如 Use PostgreSQL with Supabase hosting。
- ADR 包含 `## Rationale`,写选择理由,如 ACID、团队 PostgreSQL 经验、Supabase auth/realtime、pgvector 支持未来 AI 特性。
- ADR 包含 `## Consequences`,写后果,如需要管理 schema migrations、可能需要 read replicas、团队需学习 Supabase 特性。
- 为组件写文档,使用 `## Authentication Module` 之类的标题。
- 组件文档包含 `### Overview`,如 Handles user authentication using JWT tokens with refresh rotation。
- 组件文档包含 `### Flow`,按步骤写流程:1 用户提交凭证到 `/auth/login`;2 服务端校验并返回 access + refresh tokens;3 access token 用于 API 请求,15min 过期;4 refresh token 获取新 access token,7d 过期。
- 组件文档包含 `### Dependencies`,列依赖及用途,如 `jsonwebtoken`(Token generation/validation)、`bcrypt`(Password hashing)、`redis`(Refresh token storage)。
- 组件文档包含 `### Configuration`,列配置项,如 `JWT_SECRET`、`ACCESS_TOKEN_EXPIRY`、`REFRESH_TOKEN_EXPIRY`。
- 遵循文档原则:为受众写作,区分新开发者与 API 消费者。
- 遵循文档原则:让文档靠近代码,文档放在同一 repo 并靠近相关代码。
- 遵循文档原则:随代码更新文档,过期文档比没有更糟。
- 遵循文档原则:示例优于解释,展示而不只是讲述。
- 遵循文档原则:渐进式披露,先 Quick Start,再细节。
适用边界 · 注意事项
- 一次性脚本、原型或不会交付/协作的代码,不必套完整 README、ADR、OpenAPI 等正式文档。
- 团队已有强制文档规范或文档生成器时,不要强行套用本模板,应适配现有规范。
- 不要用注释重复显而易见的代码,也不要把过期注释留在代码中;这类场景应改用清晰代码或立即更新/删除注释。