什么是 FizzBuzz?

欢迎你加入第一个训练副本,项目很简单,这是一个简单的猜数字游戏。

想象你是个小学 5 年级的学生,现在还有 5 分钟就要下课,数学老师带全班同学玩一个小游戏。他会用手指挨个指向每个学生,被指着的学生就要依次报数:

第一个被指着的学生说“1”,

第二个被指着的学生说“2”,

以此类推。

呃……并不完全“以此类推”……如果一个学生被指着的时候,应该报的数是 3 的倍数,那么他就不能说这个数,而是要说“Fizz”。

同样的道理,5 的倍数也不能被说出来,而是要说“Buzz”。

于是游戏开始了,老师的手指向一个个同学,他们开心地喊着:“1!”,“2!”,“Fizz!”,“4!”,“Buzz!”……

终于,老师指向了你,时间仿佛静止,你的嘴发干,你的掌心在出汗,你仔细计算,然后终于喊出“Fizz!”。运气不错,你躲过了一劫,游戏继续进行。

项目需求

为了避免在自己这儿失败,我们想了一个“作弊”的法子:

假如说你有一个“神奇”的计算器,每次只需要告诉它一个数字,就能自动算出报数的结果,这样到你这儿的时候,就马上知道该说什么了。

全班有 33 个同学,游戏可能会玩 2 到 3 轮。

现在,赶紧去写代码吧!

任务分解

让我们先来拆解一下任务:

任务描述:

写一个简单的计算器,

可以通过点击按键输入任意的数字,

遇到数字为 3 的倍数的时候,计算结果为“Fizz”,

遇到数字为 5 的倍数的时候,计算结果为“Buzz”,

既能被 3 整除、又能被 5 整除的数,则输出结果为“FizzBuzz”。

页面 UI 交互部分的逻辑还包括点击 C 键对计算器进行清零,点击 = 键计算结果。

当然,别忘了 UI 样式。

画图(纸和笔)

实例化需求

number: Int

result: String

1

'1'

3

'Fizz'

5

'Buzz'

15

'FizzBuzz'

示例输出:

第二阶段:需求变更

当你开发完毕,这时候 PM 来了,他告诉你:需求变了。

  1. 如果一个数能被 3 整除,或者包含数字 3,那么这个数就是“Fizz”;

  2. 如果一个数能被 5 整除,或者包含数字 5,那么这个数就是“Buzz”。

  3. 当然,如果既是 3 的倍数又是 5 的倍数,或包含数字 3 又包含数字 5,那么这个数就是“FizzBuzz”。

这时,你该怎么办?

任务目标

  1. 掌握测试驱动开发基本节奏

  2. 至少练习 3 遍 FizzBuzz 题目

  3. 能在 10 分钟内完成 FizzBuzz 题目

学习周期

总时长

任务 0

任务 1

任务 2

任务 3

任务

练功前的热身

TDD 初体验

先利其器

再撸一遍

4h

1h

1h

1h

1h

额外推荐资料

  • Kent Beck 的《测试驱动开发》,可以只读第 1 章

最后更新于