Development
怀疑驱动开发
对每一个非平凡决策进行全新视角的对抗性审查后再确定。当正确性比速度更重要时使用。
自信的回答并不等于正确的回答。怀疑驱动开发引入一个全新视角的审查者,在任何非平凡产出被采纳之前,倾向于质疑和反驳。
当满足以下任一条件时,该决策属于非平凡决策:
怀疑循环:
- [ ] 第 1 步:声明 — 写下决策声明及其重要性
- [ ] 第 2 步:提取 — 隔离产出物和契约,剥离推理过程
- [ ] 第 3 步:怀疑 — 用对抗性提示调用全新视角审查者
- [ ] 第 4 步:调和 — 将每条发现与产出物文本进行分类对照
- [ ] 第 5 步:停止 — 满足停止条件
用两三行描述决策:
声明:"新的缓存层在规格说明中描述的读密集型负载下是线程安全的。"
重要性:此处的竞态条件会损坏用户数据,且在 QA 中难以发现。
全新视角的审查者需要产出物和契约,而不是推导过程。
剥离你的推理过程。如果你直接给出结论,审查者只会验证你的结论。
审查者的提示必须是对抗性的:
对抗性审查。找出这个产出物的问题。
假设作者过于自信。寻找:
- 未声明的假设
- 未处理的边界情况
- 隐含的耦合或共享状态
- 可能违反契约的方式
- 可能破坏的现有约定
- 在意外输入下的故障模式
不要验证。不要总结。找出问题,或者明确说明在彻底检查后未发现任何问题。
产出物:<粘贴产出物>
契约:<粘贴契约>
只传递产出物和契约。不要传递声明。 将结论交给审查者会使其偏向于同意。
对每条发现,按以下优先级分类:
在以下情况下停止:
应用怀疑驱动开发后: