极限编程概述
极限编程(eXtreme Programming),简称XP,是敏捷方法中最著名的一个。它是一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。
- 客户作为团队成员
这里首先要理解的是什么是客户,不一定是程序的最终使用者才是客户,客户是指定义产品特性并排列这些特性优先级的人或者团体。所以很可能客户就是你公司的市场人员或者业务分析师。客户最好能够与开发人员在同一个房间里,这样更方便沟通。 - 用户素材
用户素材说才了就是用户需求。对于开发者还说,就是一个个task - 短交付周期
交付周期一般为两周交付一次可以工作的软件。文中的“迭代”就是交付周期的意思。在每个交付周期,都要定义需要完成的task。一般情况下,团队会做一个3个月的计划,也就是6个迭代周期。但计划不是一成不变的,是可以随时改变的 - 验收测试
验收测试一般是在实现任务之前或者在实现任务过程中同时进行编写的。 - 结对编程
就是两个人结对编程,一个人负责控制键盘,另一个观察输入的代码并寻找代码中的错误和可以改进的地方。两个人的角色要经常交换。同时结对的对象也要经常交换。这将极大地促进知识在团队中的传播。 - 测试驱动的开发方法
先编写测试用例集,然后编写代码,做单元测试,使代码最终都能pass测试用例 - 集体所有权
每个人都有相同的职责和权利,同时每个人不会被局限在自己擅长的领域,这样就不会因为少了某一个人而使团队陷入被动 - 持续集成
很小的改动就可以merge到服务器上,这个概念与git的概念是一致的,支持频繁集成 - 可持续的开发速度
就是不支持加班工作,生活是一场马拉松,工作也一样,要保持精力旺盛,就不能提前透支。保持稳定、适中的速度 - 开放的工作空间
就是开放性的工作环境,使人心情愉悦,也适合积极的讨论 - 计划游戏
划分业务人员和开发人员的职责,业务人员决定特性的重要性,开发人员决定实现一个特性需要的代价 - 简单的设计
尽量使用简单的设计。比如说能用单线程,就不要用多线程 - 重构
随着添加新的特性,处理一个个错误,代码会越来越混乱,这时就需要通过代码重构来扭转这种退化。重构是持续进行的,可能每天,每隔一个小时都会去做重构,不要等到任何的时间点才去做重构 - 隐喻
它是将整个系统联系在一起的全局视图,它是系统的未来景像,它使得所有的单独模块的位置和外观变得明显直观