敏捷整洁之道 -- 第五章 技术实践

敏捷整洁之道 -- 第五章 技术实践

  • 1. 测试驱动开发
  • 2. 重构
  • 3. 简单设计
  • 4. 结对编程

全文学习于 《敏捷整洁之道》
作者:[美] 罗伯特·C.马丁
译者:申健 何强 罗涛

1. 测试驱动开发

  1. 测试驱动开发类似于复式记账:

    • 复式记账:每笔交易会写入账本两次
      • 在一组账户中记一笔贷项,然后相应的在另一组账户中记为借项,这些账户最终汇总到收支平衡表文件中,如果差额不为 0,那么就出错了;
    • 测试驱动开发需要每个必要的行为都输入两次:
      • 一次作为测试,另一次作为使测试通过的生产代码;
      • 当测试代码与生产代码一起执行时,失败的测试数为零;
  2. TDD 三规则

    • TDD 可以描述为以下 3 条简单的规则:
      • 先编写一个因为缺乏生产代码而失败的测试,然后才能编写生产代码;
      • 只允许编写一个刚好失败的测试 – 编译失败也算;
      • 只允许编写刚好能使当前失败测试通过的生产代码;
  3. TDD 的好处:

    • 假设有一个遵循三规则的程序员,该程序员的所有工作内容都在一分钟之前执行并通过全部测试,那么代表着这个程序员一分钟之前所有内容都是可以工作的;
    • 即使出了问题,一分钟以内的故障都是小事一桩,根本不需要动用调试器来寻找问题。
  4. 基于 TDD 模式开发程序,不是不会遇到棘手的 bug,而是会降低 bug 的发生率和严重性;

2. 重构

  1. 重构是改善代码结构的实践,但并不改变由测试定义的行为;

    • 在不破坏任何测试的情况下对命名、类、函数和表达式进行修改;
    • 在不影响行为的情况下改善系统的结构;
    • 在重构时,测试必须始终保持通过的状态;

    敏捷整洁之道 -- 第五章 技术实践_第1张图片

  2. 编写可用的代码和整洁的代码是两个不同的维度,同时控制很难:

    • 可以先以粗劣的想法草草的使代码工作起来;
    • 然后,一旦代码工作起来了且通过测试,就对其重构;
    • 重构是一个持续的过程,而不是定期执行的过程;
  3. 重构不应该出现在时间表上,也不应该出现在项目的计划中;重构是每分钟,每小时软件开发活动中不可分割的一部分。

3. 简单设计

  1. 简单设计:仅编写必要的代码,使得程序结构保持最简单、最小和最富表现力;
  2. 规则如下:
    • 所有测试通过;
    • 揭示意图;
      • 代码在工作之后还必须具备表现力;
    • 消除重复;
    • 减少元素;

4. 结对编程

  1. 结对是两个人共同解决同一个编程问题;
  2. 结对可能的模式:
    • 一个是手持键盘和鼠标的驾驶员,一个是眼观六路的导航员;
    • 另一种是,一个人先编写测试,另一位编写实现该测试的业务代码,然后交换来实现;
  3. 结对不需要事先安排,根据程序员的喜好来形成或解散搭档;
  4. 结对是团队成员之间共享知识并防止形成知识孤岛的最佳方法;
  5. 结对不一定是两个人,也被称为“聚众式编程”;

你可能感兴趣的:(CLeanCode,驱动开发)