《测试驱动开发与设计模式》 让“理想结构”与“快速变更”并行

1. 理想的结构

软件设计中理想的结构是怎样的? 在给出答案之前,先看看自然界的例子。

首先是DNA。两条链围着一条中心轴,绕成双螺旋,只有三个组成元件:碱基、脱氧核糖和磷酸。它们先有序组合,再重复、延伸。简单、清晰。

然后是碳原子的组合,有好多种。如果每个碳原子与相邻四个碳原子相连,组成正四面体,再重复、拓展,就成晶体状的金刚石;如果每个碳原子与相邻其他三个碳原子相连,组成正六边形,再重复、堆叠,就成片状的石墨。也是简单、清晰。

同样的,软件设计也追求简单的结构。具体来说就是用简单的模式搭起来的小部件。

几个部件合成一体,在某个维度上重复、延伸。另外几个部件又合成一体,在另一个维度上重复、延伸。各个维度上部件组独立发展,同时在少量交点上彼此联系。

这就像一棵树,树枝间相互独立,又相互关联。

每个维度是内聚的。调整其中一个维度不影响其他维度;调整维度之间的接口,维度内部也只需要在局部做小的调整。这就是理想结构:简单清晰所以稳定,容易调整所以富有弹性。

测试驱动开发的初衷,正是希望得到这样的结构。

2. 怎么得到它

第一,测试驱动开发聚焦于明确的需求,不塞进空想的东西。不明确的需求,就让它呆在纸上、脑子里,直到成形。这样做的目的只有一个,保持设计简单。

第二,测试驱动开发有完善的、而且时时可继续完善的测试用例集。时时运行它们,首先的好处当然是验证稳定性,更大的意义则是在调整时提供保护。

这两点是测试驱动开发的两个基本要点。

有这两点做基础,开发者就不需要担心需求不完整、不准确。只要需求累积到一定的交付尺度,设计就可以从这个起点开始生长。因为设计是内聚的,未来如果有调整,也是有限、快速的。事实上,测试驱动开发追求快速变更的能力,而不追求对混沌未来的远见卓识。这正是术语“不过度设计”的含义。

在质量和效率之间取得平衡。一旦做到这一点,开发者的心里就是从容、淡定、无所畏惧的。

相关链接

测试驱动开发与设计模式 - 为什么使用测试驱动开发
测试驱动开发与设计模式 - 从入门到精通
测试驱动开发与设计模式 - C++书籍及网站
测试驱动开发与设计模式 - 适应并改进软件设计过程
测试驱动开发与设计模式 - 让“理想结构”与“快速变更”并行
测试驱动开发与设计模式 - 提速 — 在纸上做细节设计
测试驱动开发与设计模式 - 开发实例一 DVR-POS库
测试驱动开发与设计模式 - 开发实例二 JSON过滤库
测试驱动开发与设计模式 - 开发实例三 rs_driver库

你可能感兴趣的:(《测试驱动开发与设计模式》 让“理想结构”与“快速变更”并行)