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

x33g5p2x  于2021-12-05 转载在 其他  
字(0.9k)|赞(0)|评价(0)|浏览(224)

1. 测试驱动开发

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

  • 复式记账:每笔交易会写入账本两次

  • 在一组账户中记一笔贷项,然后相应的在另一组账户中记为借项,这些账户最终汇总到收支平衡表文件中,如果差额不为 0,那么就出错了;

  • 测试驱动开发需要每个必要的行为都输入两次:

  • 一次作为测试,另一次作为使测试通过的生产代码;

  • 当测试代码与生产代码一起执行时,失败的测试数为零;

  • TDD 三规则

  • TDD 可以描述为以下 3 条简单的规则:

  • 先编写一个因为缺乏生产代码而失败的测试,然后才能编写生产代码;

  • 只允许编写一个刚好失败的测试 – 编译失败也算;

  • 只允许编写刚好能使当前失败测试通过的生产代码;

  • TDD 的好处:

  • 假设有一个遵循三规则的程序员,该程序员的所有工作内容都在一分钟之前执行并通过全部测试,那么代表着这个程序员一分钟之前所有内容都是可以工作的;

  • 即使出了问题,一分钟以内的故障都是小事一桩,根本不需要动用调试器来寻找问题。

  • 基于 TDD 模式开发程序,不是不会遇到棘手的 bug,而是会降低 bug 的发生率和严重性;

2. 重构

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

  • 在不破坏任何测试的情况下对命名、类、函数和表达式进行修改;

  • 在不影响行为的情况下改善系统的结构;

  • 在重构时,测试必须始终保持通过的状态;

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

  • 可以先以粗劣的想法草草的使代码工作起来;

  • 然后,一旦代码工作起来了且通过测试,就对其重构;

  • 重构是一个持续的过程,而不是定期执行的过程;

  • 重构不应该出现在时间表上,也不应该出现在项目的计划中;重构是每分钟,每小时软件开发活动中不可分割的一部分。

3. 简单设计

  1. 简单设计:仅编写必要的代码,使得程序结构保持最简单、最小和最富表现力;
  • 规则如下:

  • 所有测试通过;

  • 揭示意图;

  • 代码在工作之后还必须具备表现力;

  • 消除重复;

  • 减少元素;

4. 结对编程

  1. 结对是两个人共同解决同一个编程问题;
  • 结对可能的模式:

  • 一个是手持键盘和鼠标的驾驶员,一个是眼观六路的导航员;

  • 另一种是,一个人先编写测试,另一位编写实现该测试的业务代码,然后交换来实现;

  • 结对不需要事先安排,根据程序员的喜好来形成或解散搭档;

  • 结对是团队成员之间共享知识并防止形成知识孤岛的最佳方法;

  • 结对不一定是两个人,也被称为“聚众式编程”;

相关文章