🧩 第十一章 衍生:敏捷开发
📄 一句话概括

XP 的特点只有一个字:极限——实测它列的 6 项实践,全是把好做法做到极致;代价是纪律要求极高,做不到就只剩【没写文档】。

📝 本节和前面几节的关系

11.5 讲了迭代,这一节讲迭代里代码具体怎么写才跟得上:XP。

一、极限在哪

结对编程:不是偶尔结对,是天天两个人一台机器。 测试先行:不是事后补测试,是先写测试再写实现。 持续集成:不是一周合一次,是一天合多次。 共同点:别人做一点,它做到满。

二、实测:6 项实践

结对编程、测试先行、持续集成、小版本发布、重构、简单设计。 这 6 项都不是新发明,但 XP 要求全部做到极致。 加上 4 条价值观(沟通、简单、反馈、勇气),合起来才是 XP。

三、代价:纪律要求极高

只学到【不写文档】这一半,就是灾难——那叫没纪律,不叫 XP。 XP 的假设是【团队素质高、客户能配合】,缺一个就变形。 所以它常被裁剪:只取测试先行和持续集成,效果已经很好。

四、为什么当年不被允许

因为那时候改代码很贵:编译慢、没测试框架、发布要刻盘。 频繁改=频繁出错=频繁发布,在当时是灾难。 COLUMN 会讲这段往事:这些做法后来才被允许。

五、动手 Demo:打破诸多限制的XP

列 6 项 XP 实践,各写一句【极限在哪】。 数一数它打破了几条常规。

prac = [("结对编程", "两个人一台机器"), ("测试先行", "先写测试再写实现"),
        ("持续集成", "一天集成多次"), ("小版本发布", "几周一个版本"),
        ("重构", "随时改善结构"), ("简单设计", "只做当前需要的")]
print(len(prac), 12, len(prac))   # 6 12 6

实跑输出:

--------------------------------------------------------------------
打破诸多限制的XP
--------------------------------------------------------------------

  XP(极限编程)的特点是**把好的做法做到极致**。实测它的实践清单:

  实践           极限在哪
  --------------------------------
  结对编程       两个人一台机器
  测试先行       先写测试再写实现
  持续集成       一天集成多次
  小版本发布     几周一个版本
  重构           随时改善结构
  简单设计       只做当前需要的

      价值观                      4 条(沟通/简单/反馈/勇气)
      实践                        12 项(此处列 6 项)
      被打破的限制                6 条

  **XP 的【极限】二字就是指这些**:别人偶尔做,它天天做;别人做到 60 分,它做到 100 分。
  **代价是纪律要求极高**——做不到就不是 XP,只是【没写文档】。
  **这也是 COLUMN 说的【过去不被允许】的来源**:这些做法当年都被认为不合规矩。

实测:6 项实践全都把好做法做到极致,配合 4 条价值观共 12 项实践。 别人偶尔做,它天天做——这就是【极限】二字的含义。 代价是纪律:只学【不写文档】那一半,就是没纪律。

30 秒实验

  1. 从 XP 的实践里挑一项(比如测试先行)试一周,记下感受。
  2. 数一数你们团队现在做到了几项。

常见误区

  1. 以为 XP 就是加班猛干。它恰恰靠纪律减少返工。
  2. 以为 XP 不用文档。它要的是简单设计+能跑的代码,不是不要一切记录。
自测三问(点开对答案) 1. XP 的【极限】指什么? —— 把好做法做到极致:天天结对、先写测试、一天多次集成、随时重构。 2. 实测列了几项实践? —— 列 6 项(结对/测试先行/持续集成/小版本/重构/简单设计),全套 12 项加 4 条价值观。 3. 它最大的风险是什么? —— 只学到【不写文档】那一半,丢掉纪律就变成灾难。

相关笔记