原文: http://xp123.com/xplor/xp0006/index.shtml
极限编程立方体是XP程序员每天工作的快照。
极限编程之实践:
极限编程(XP)是一个反常规的方法,它在“天”(甚至分钟)的级别规定实践。
我们通常用状态机来表述一组活动及其之间可能的变迁。我们或许也可以用状态机来描述极限编程实践:
相册/图片/XP状态机
图中间的三角形代表了极限编程的核心思想:“测试-->编码-->重构”,这与传统编程的“设计-->编码-->测试”过程相反。
让我们逐一的看一下各个实践:
上午9点站立会议:
- 这不是极限编程的正式部分;
- 许多团队采用这个实践来获得今天的工作重点;
- 固定的会议时间提醒团队每周工作40小时。
结对
- 所有产品代码都由结对产出;
- 控制键盘的人从战术上考虑问题,另一个人则从战略角度考虑问题;
- 两个人周期性的转换角色。
测试:
- 每次只写小的单元测试;
- 编码前确定新添加的测试运行失败(要是测试不失败就囧了);
- 遵循团队的编码标准。
编码:
- “做可以工作的最简单的事情”;
- 让测试通过即止;
- 遵循团队的编码标准。
重构:
- 找到“代码不好的味道”(哪些地方感觉不对),在此实施重构,确保所有测试依然通过;
- 代码需满足:
通过所有测试,
为获得所需而通信,
没有重复的逻辑,
类和方法越少约好; - 小步前进,每步都要运行单元测试做为保障;
- 详见Martin Fowler 的 Refactoring
现场客户问答:
- 客户可在现场提供即时的答案;
- 诸多问题是要求决策(而不是事实)的,现场客户需要为次做好准备;
- 现场客户需要编写可接受测试,和(较罕见)用户故事,来记录他们的答案。
集成或丢弃:
- 将代码提交到集成工作机上,构建系统,运行所有测试;
- 修复问题,知道所有测试通过;
- 如果集成困难,则放弃,明天再试。
回到“结对”:
如果今天还有时间,你可以重新结对(或至少是在当前结对中互换角色)开始另一个任务。
下午5点下班回家:
- 按时下班回家以强化每周工作40小时的实践;
- 确保手头没有为完成的工作,几天所做的所有工作都已集成好(或者被清理、放弃)。
极限编程立方体
通过扭转(和一点点摆弄),上述周期的核心可以展现为立方体的形式:
相册/图片/XP立方体
在实际情况情况下,团队不太可能每一次进展都需要坐下来摆弄这个立方体——何必呢?
- 这个三维的模型不应该放在纸堆里,它有更好的用途;
- 该立方体有助于:培训,给初学者可以看可以想的实物;
- 该立方体有助于提醒你极限编程的几个重要层面:
永远结对,
编码前得到问题的答案,
测试先行,
必要时要舍弃,
下班清理。
小结
极限编程立方体嵌入了极限编程的日常实践:结对、现场客户问答、测试、编码、重构、集成或丢弃。
这个立方体是一个可以提醒我们XP团队看重的重要实践的可视化工具。