mcpskills.net
技能MCP智能体提示词
mcpskills.net — A curated directory of AI agent Skills and MCP servers
TermsPrivacy
← 返回技能
Development

增量式实现

以增量方式交付变更。当实现任何涉及多个文件的功能或改动时使用。

作者:Addy Osmani仓库 →来源 →

以纵向薄切片的方式构建——实现一小块,对其进行测试、验证,然后再扩展。

使用场景

  • 实现任何涉及多个文件的变更
  • 根据任务拆解构建新功能
  • 重构现有代码
  • 任何时候,当你想在测试之前写超过约 100 行代码时

增量循环

┌──────────────────────────────────────┐
│                                      │
│   Implement ──→ Test ──→ Verify ──┐  │
│       ▲                           │  │
│       └───── Commit ◄─────────────┘  │
│              │                       │
│              ▼                       │
│          Next slice                  │
│                                      │
└──────────────────────────────────────┘

对于每个切片:

  1. 实现最小的完整功能片段
  2. 测试——运行测试套件
  3. 验证——确认该切片按预期工作
  4. 提交(Commit)——用描述清晰的信息保存你的进展
  5. 进入下一个切片

切分策略

纵向切片(推荐)

构建一条贯穿整个技术栈的完整路径:

Slice 1: Create a task (DB + API + basic UI)
    → Tests pass, user can create a task via the UI

Slice 2: List tasks (query + API + UI)
    → Tests pass, user can see their tasks

Slice 3: Edit a task (update + API + UI)
    → Tests pass, user can modify tasks

Slice 4: Delete a task (delete + API + UI + confirmation)
    → Tests pass, full CRUD complete

风险优先切分

先攻克风险最高的部分:

Slice 1: Prove the WebSocket connection works (highest risk)
Slice 2: Build real-time task updates on the proven connection
Slice 3: Add offline support and reconnection

实现规则

规则 0:简单优先

在编写任何代码之前,先问:“能行得通的最简单做法是什么?”

SIMPLICITY CHECK:
✗ Generic EventBus with middleware pipeline for one notification
✓ Simple function call

✗ Abstract factory pattern for two similar components
✓ Two straightforward components with shared utilities

✗ Config-driven form builder for three forms
✓ Three form components

规则 0.5:范围纪律

只改动任务所需的部分。不要“顺手整理”相邻的代码。

规则 1:一次只做一件事

每个增量只改动一件逻辑上的事情。不要混淆关注点。

规则 2:保持可编译

每次增量之后,项目必须能够构建,且现有测试必须通过。

规则 3:为未完成的功能使用特性开关

const ENABLE_TASK_SHARING = process.env.FEATURE_TASK_SHARING === 'true';

if (ENABLE_TASK_SHARING) {
  // New sharing UI
}

规则 4:安全的默认值

新代码应默认采用安全、保守的行为:

export function createTask(data: TaskInput, options?: { notify?: boolean }) {
  const shouldNotify = options?.notify ?? false;
  // ...
}

规则 5:易于回滚

每个增量都应能够独立回退。

增量检查清单

每次增量之后:

  • [ ] 该变更只做一件事,并且完整地做好它
  • [ ] 所有现有测试仍然通过(npm test)
  • [ ] 构建成功(npm run build)
  • [ ] 类型检查通过(npx tsc --noEmit)
  • [ ] 代码检查通过(npm run lint)
  • [ ] 新功能按预期工作
  • [ ] 该变更已用描述清晰的信息提交

验证

完成一个任务的所有增量之后:

  • [ ] 每个增量都已单独测试并提交
  • [ ] 完整测试套件通过
  • [ ] 构建干净无误
  • [ ] 功能按规范端到端工作
  • [ ] 没有残留的未提交变更