极限编程立方体 —— XP程序员的一天(XP Programmer's Cube - A Day in the Life)
2010-03-01 15:10
288 查看
原文: http://xp123.com/xplor/xp0006/index.shtml
极限编程立方体是XP程序员每天工作的快照。
我们通常用状态机来表述一组活动及其之间可能的变迁。我们或许也可以用状态机来描述极限编程实践:
相册/图片/XP状态机
图中间的三角形代表了极限编程的核心思想:“测试-->编码-->重构”,这与传统编程的“设计-->编码-->测试”过程相反。
让我们逐一的看一下各个实践:
许多团队采用这个实践来获得今天的工作重点;
固定的会议时间提醒团队每周工作40小时。
控制键盘的人从战术上考虑问题,另一个人则从战略角度考虑问题;
两个人周期性的转换角色。
编码前确定新添加的测试运行失败(要是测试不失败就囧了);
遵循团队的编码标准。
让测试通过即止;
遵循团队的编码标准。
代码需满足:
通过所有测试,
为获得所需而通信,
没有重复的逻辑,
类和方法越少约好;
小步前进,每步都要运行单元测试做为保障;
详见Martin Fowler 的 Refactoring
诸多问题是要求决策(而不是事实)的,现场客户需要为次做好准备;
现场客户需要编写可接受测试,和(较罕见)用户故事,来记录他们的答案。
修复问题,知道所有测试通过;
如果集成困难,则放弃,明天再试。
确保手头没有为完成的工作,几天所做的所有工作都已集成好(或者被清理、放弃)。
相册/图片/XP立方体
在实际情况情况下,团队不太可能每一次进展都需要坐下来摆弄这个立方体——何必呢?
这个三维的模型不应该放在纸堆里,它有更好的用途;
该立方体有助于:培训,给初学者可以看可以想的实物;
该立方体有助于提醒你极限编程的几个重要层面:
永远结对,
编码前得到问题的答案,
测试先行,
必要时要舍弃,
下班清理。
这个立方体是一个可以提醒我们XP团队看重的重要实践的可视化工具。
极限编程立方体是XP程序员每天工作的快照。
极限编程之实践:
极限编程(XP)是一个反常规的方法,它在“天”(甚至分钟)的级别规定实践。我们通常用状态机来表述一组活动及其之间可能的变迁。我们或许也可以用状态机来描述极限编程实践:
相册/图片/XP状态机
图中间的三角形代表了极限编程的核心思想:“测试-->编码-->重构”,这与传统编程的“设计-->编码-->测试”过程相反。
让我们逐一的看一下各个实践:
上午9点站立会议:
这不是极限编程的正式部分;许多团队采用这个实践来获得今天的工作重点;
固定的会议时间提醒团队每周工作40小时。
结对
所有产品代码都由结对产出;控制键盘的人从战术上考虑问题,另一个人则从战略角度考虑问题;
两个人周期性的转换角色。
测试:
每次只写小的单元测试;编码前确定新添加的测试运行失败(要是测试不失败就囧了);
遵循团队的编码标准。
编码:
“做可以工作的最简单的事情”;让测试通过即止;
遵循团队的编码标准。
重构:
找到“代码不好的味道”(哪些地方感觉不对),在此实施重构,确保所有测试依然通过;代码需满足:
通过所有测试,
为获得所需而通信,
没有重复的逻辑,
类和方法越少约好;
小步前进,每步都要运行单元测试做为保障;
详见Martin Fowler 的 Refactoring
现场客户问答:
客户可在现场提供即时的答案;诸多问题是要求决策(而不是事实)的,现场客户需要为次做好准备;
现场客户需要编写可接受测试,和(较罕见)用户故事,来记录他们的答案。
集成或丢弃:
将代码提交到集成工作机上,构建系统,运行所有测试;修复问题,知道所有测试通过;
如果集成困难,则放弃,明天再试。
回到“结对”:
如果今天还有时间,你可以重新结对(或至少是在当前结对中互换角色)开始另一个任务。下午5点下班回家:
按时下班回家以强化每周工作40小时的实践;确保手头没有为完成的工作,几天所做的所有工作都已集成好(或者被清理、放弃)。
极限编程立方体
通过扭转(和一点点摆弄),上述周期的核心可以展现为立方体的形式:相册/图片/XP立方体
在实际情况情况下,团队不太可能每一次进展都需要坐下来摆弄这个立方体——何必呢?
这个三维的模型不应该放在纸堆里,它有更好的用途;
该立方体有助于:培训,给初学者可以看可以想的实物;
该立方体有助于提醒你极限编程的几个重要层面:
永远结对,
编码前得到问题的答案,
测试先行,
必要时要舍弃,
下班清理。
小结
极限编程立方体嵌入了极限编程的日常实践:结对、现场客户问答、测试、编码、重构、集成或丢弃。这个立方体是一个可以提醒我们XP团队看重的重要实践的可视化工具。
相关文章推荐
- MySQL报错“ you can't specify the target table for ‘update’ in from clause”
- LINUX TOMCAT 部署 两个项目 出现Choose unique values for the 'webAppRootKey' context-param in your web.xml
- hbase无法启动,The node /hbase is not in ZooKeeper和Can't get master address from ZooKeeper;
- The type or namespace name 'Windows' does not exist in the class or namespace 'System'
- No configuration found for the specified action: 'login' in namespace: ''. Form action defaulting to 'action' attribute's litera
- Some of the Best Open Source Project's in VC++ & MFC
- in the prefix, you've chosen, there are no KDE headers installed.
- poj 2388 Who's in the Middle
- The Teachers' Day
- Some of the best Open Source Project's in VC++ & MFC
- ADO.NET Entity Framework: The version of SQL Server in use does not support datatype 'datetime2'
- HDU 1157 Who's in the Middle (快速排序 or 任意排序)
- ubuntu 安装maven提示出错 The program 'mvn' can be found in the following packages
- 警告: No configuration found for the specified action: 'loginPerson' in namespace: ''. Form action def
- POJ 2388 && HDU 1157 Who's in the Middle(水~)
- no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups
- Message 'You cannot use the EurekaLog package in other packages'.
- Could not find default endpoint element that references contract 'wcfXXXXXXXXXXX' in the ServiceMode
- Cannot assign to 'self' outside of a method in the init family
- PKU_ACM_2388_Who's in the Middle