name: xp-practices description: “应用XP实践,包括结对编程、集体编程、持续集成和可持续节奏。在实施敏捷开发实践、改善团队协作或采用技术卓越实践时使用。” category: methodology priority: medium tokenEstimate: 1000 agents: [qe-quality-analyzer, qe-test-executor, qe-code-reviewer] implementation_status: optimized optimization_version: 1.0 last_optimized: 2025-12-03 dependencies: [] quick_reference_card: true tags: [xp, agile, pair-programming, tdd, continuous-integration, collaboration] trust_tier: 0 validation:
极限编程(XP)实践
<default_to_action> 应用XP实践时:
- 从提供即时价值的实践开始
- 逐步建立支持性实践
- 适应您的环境
- 测量结果
核心XP实践(优先顺序):
| 实践 | 从此开始 | 为何优先 |
|---|---|---|
| TDD | ✅ 是 | 一切的基础 |
| 持续集成 | ✅ 是 | 快速反馈 |
| 结对编程 | ✅ 是 | 知识共享 |
| 集体所有权 | 在CI+TDD之后 | 需要安全网 |
| 小发布 | 在CI之后 | 基础设施依赖 |
结对快速入门:
驾驶员-导航员(经典):
- 驾驶员:编写代码
- 导航员:审查、提前思考
- 每20-30分钟轮换
乒乓(与TDD):
A:编写失败测试
B:使测试通过 + 重构
B:编写下一个失败测试
A:使测试通过 + 重构
</default_to_action>
快速参考卡
XP的五项价值
| 价值 | 含义 | 实践 |
|---|---|---|
| 沟通 | 每个人都了解其他人的工作 | 每日站会、结对 |
| 简单性 | 最简单的可行方案 | YAGNI、小设计 |
| 反馈 | 尽早并频繁获取反馈 | TDD、CI、短迭代 |
| 勇气 | 说实话、适应变化 | 重构、承认错误 |
| 尊重 | 每个人都贡献价值 | 可持续节奏、结对 |
核心实践
| 实践 | 描述 | 好处 |
|---|---|---|
| 结对编程 | 两名开发者,一台工作站 | 质量 + 知识共享 |
| TDD | 红-绿-重构 | 信心 + 设计 |
| CI | 每天集成多次 | 快速反馈 |
| 集体所有权 | 任何人都可以修改任何代码 | 无瓶颈 |
| 可持续节奏 | 40小时工作周 | 长期生产力 |
| 小发布 | 频繁发布 | 降低风险 |
结对编程
何时结对
| 情境 | 结对? | 原因 |
|---|---|---|
| 复杂/高风险代码 | ✅ 总是 | 需要多个视角 |
| 新技术 | ✅ 总是 | 学习加速器 |
| 新成员入职 | ✅ 总是 | 知识传递 |
| 关键错误 | ✅ 总是 | 两个脑袋更好 |
| 简单任务 | ❌ 跳过 | 不值得开销 |
| 研究探索 | ❌ 跳过 | 结对讨论发现 |
结对该做和不该做
该做:
- ✅ 每20-30分钟切换角色
- ✅ 一起休息
- ✅ 大声思考
- ✅ 提问
- ✅ 保持会话2-4小时最长
不该做:
- ❌ 未经询问就抢键盘
- ❌ 结对时看手机
- ❌ 主导对话
- ❌ 整天结对(疲惫)
集体(群体)编程
设置: 3名以上开发者,一个屏幕,轮换驾驶员
[屏幕]
↓
[驾驶员] ← 来自导航员的指导
↑
[导航员1] [导航员2] [导航员3]
轮换: 驾驶员每5-10分钟切换
最适合:
- 复杂问题解决
- 架构决策
- 学习新框架
- 解决阻塞
持续集成
CI工作流:
1. 从主线拉取最新代码
2. 做小修改(<2小时工作)
3. 本地运行测试(全部通过)
4. 提交并推送
5. CI自动运行测试
6. 如果失败 → 立即修复
最佳实践:
- 频繁提交(小修改)
- 保持构建快速(<10分钟)
- 立即修复损坏的构建
- 永不向损坏的构建提交
简单设计的四条规则
(按优先顺序)
- 通过所有测试 - 正确工作
- 揭示意图 - 清晰、表达性代码
- 无重复 - DRY原则
- 最少元素 - 无推测性代码
代理集成
// 代理-人类结对测试
const charter = "测试支付边界情况";
const tests = await Task("生成测试", { charter }, "qe-test-generator");
const reviewed = await human.review(tests);
await Task("实施", { tests: reviewed }, "qe-test-generator");
// 与代理的持续集成
await Task("风险分析", { prDiff }, "qe-regression-risk-analyzer");
await Task("生成测试", { changes: prDiff }, "qe-test-generator");
await Task("执行测试", { scope: 'affected' }, "qe-test-executor");
// 可持续节奏:代理处理繁琐工作
const agentWork = ['回归测试', '数据生成', '覆盖分析'];
const humanWork = ['探索性测试', '风险评估', '策略制定'];
代理协调提示
内存命名空间
aqe/xp-practices/
├── pairing-sessions/* - 结对/集体会话日志
├── ci-metrics/* - CI健康指标
├── velocity/* - 团队速度数据
└── retrospectives/* - XP回顾笔记
车队协调
const xpFleet = await FleetManager.coordinate({
strategy: 'xp-workflow',
agents: [
'qe-test-generator', // TDD支持
'qe-test-executor', // CI集成
'qe-code-reviewer' // 集体所有权
],
topology: 'parallel'
});
常见反对意见
| 反对意见 | 回应 |
|---|---|
| “结对编程慢两倍” | 编写慢15%,错误少15%,净收益为正 |
| “没时间做TDD” | 调试比测试花费更长时间 |
| “CI设置困难” | 从简单开始:一个操作,一个测试 |
| “集体所有权等于混乱” | 仅在没有测试 + CI时 |
相关技能
- tdd-london-chicago - TDD深度探索
- refactoring-patterns - 安全重构
- pair-programming - AI辅助结对
记住
XP实践作为一个系统工作。 不要随机挑选:
- TDD实现集体所有权
- CI实现小发布
- 结对实现集体所有权
- 可持续节奏实现一切
与代理: 代理放大XP。将人类与代理结对。代理处理重复性工作,人类提供判断和创造力。