Prototype
原型是用来回答某个问题的一次性代码。问题决定了它的形态。
选择一条分支
明确正在回答的是哪个问题:
- "这套逻辑/状态模型感觉对吗?" → 构建一个微型交互式终端应用,把状态机推过那些在纸面上难以推演的各种情形。
- "它应该长什么样?" → 在单个路由上生成若干个截然不同的 UI 变体,通过 URL 查询参数和一个悬浮的底部工具栏切换。
适用于两种分支的规则
- 从第一天起就是一次性的,并明确标注为此。 把原型代码放在它实际会被使用的位置附近。
- 一条命令即可运行。 使用项目现有任务运行器所支持的任何方式。
- 默认不持久化。 状态保存在内存中。
- 跳过打磨。 不写测试,除让原型_可运行_所必需外不做错误处理,不做抽象。
- 暴露状态。 每次操作之后,打印或渲染完整的相关状态,让用户看到发生了什么变化。
- 完成后删除或吸收。 当原型回答了它的问题后,要么删除它,要么把已验证的决策融入到真实代码中。
完成后
从原型中唯一值得保留的就是那个_答案_。将它连同它所回答的问题一起记录到某个持久的地方(提交信息、ADR、issue,或原型旁边的 NOTES.md)。