第 1 章. 资金问题
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
我不会为复杂这一边的简单而付出任何代价,但我愿意为复杂另一边的简单而付出生命。
奥利弗-温德尔-霍姆斯(Oliver Wendell Holmes Jr.
我们的开发环境已经准备就绪。在本章中,我们将学习支持测试驱动开发的三个阶段。 然后,我们将使用测试驱动开发编写第一个代码功能。
红-绿-重构:测试驱动开发的基石
测试驱动开发分为三个阶段:
-
红色。我们编写了一个失败的测试(包括可能的编译失败)。我们运行测试套件来验证失败的测试。
-
绿色。我们编写了足够的生产代码,使测试为绿色。我们运行测试套件来验证这一点。
-
重构。我们会删除任何有异味的代码。这些可能是由于重复、硬编码值或语言习惯用法的不当使用(例如,使用冗长循环而不是内置迭代器)造成的。如果我们在重构过程中破坏了任何测试,我们会优先将其恢复到绿色状态,然后再退出此阶段。
这就是红-绿-重构(RGR)循环,如图 1-1 所示。该循环的三个阶段是测试驱动开发的基本构件。我们在本书中开发的所有代码都将遵循这一循环。
图 1-1. 红-绿-重构循环是测试驱动开发的基础
重要内容
红-绿-重构循环的三个阶段是 TDD 的基本组成部分。
问题出在哪里?
我们有一个资金问题。不,不是那种几乎人人都有的问题:钱不够用!它更像是一个 "我们想记录我们的钱 "的问题。
假设我们需要建立一个电子表格来管理不止一种货币的资金,也许是为了管理股票投资组合。
| 股票 | 股票交易所 | 股票 | 股票价格 | 总价 |
|---|---|---|---|---|
IBM |
纳斯达克 |
100 |
124 美元 |
12400 美元 |
宝马 |
DAX |
400 |
75 欧元 |
30000 欧元 |
三星 |
韩国证券交易所 |
300 |
68000 韩元 |
20400000 韩元 |
要建立这个电子表格,我们需要对任何一种货币的数字进行简单的算术运算:
5 美元 × 2 = 10 美元 |
10 欧元 × 2 = 20 欧元 |
4002 韩元 / 4 = 1000.5 韩元 |
我们还需要在不同货币之间进行转换。例如,兑换 1 欧元可以得到 1.2 美元,兑换 1 美元可以得到 1100 韩元:
5 美元 + 10 欧元 = 17 美元 |
1 美元 + 1100 克鲁瓦 = 2200 克鲁瓦 |
上述每一项都将是我们使用 TDD 实现的一个(很小很小的)功能。我们已经有好几个功能要实现了。为了让我们一次只专注于一件事,我们将用粗体字标出我们正在开发的功能。当我们完成一项功能时,我们会将其划掉,以示满意。
那么,我们应该从哪里开始呢?如果本书的标题还不够明显,我们将从编写测试开始。
第一个失败的测试
让我们从实现列表中的第一个 ...