下午做入职的TDD培训练习,CodeKata上的网球比赛练习。
初看题时,人是懵的。我大概不知道我是谁,我在哪,谁在打我。想着费帅,纳豆,娜姐的网球比赛,瞬间想到:这不就是一局网球比赛对各种比分情况输出当前比赛结果嘛。
来,官网任务翻译的低配版如下:
1. 赢的人至少需要3点,并且比对手高出2点;
2. 0对应love,1对应fifteen 15,2对应thirty 30,3对应 fourty 40;
3. 当双方都取得3点(就是都拿了40分),双方进入 deuce;
4. 都取得3点后,一方拿到4点,则该方先取得AD(Advanced简写啦)。
所以,测试用例就能写出来了噻。来,第一个用例(伪代码):
input:0 vs 0,output:love all
TDD开始,第一个测试用例的开发代码最简单,写一个getScore函数,参数是双方比赛点数,输出 love all
测试通过,继续写测试用例(伪代码)
input:1 vs 1,output:fifteen all
跑测试,第二个明显不通过,TDD继续。想到双方比分相同,也输出 xxx all。于是,getScore函数增加双方点数相等与否的判断,我还加了一个 点数和分数 的Map,对应关系就是 翻译2 。这样,根据双方当前点数,若相同,输出 点数对应的分数 all
测试通过,继续写测试用例,考虑到双方都取得40分时,进入 deuce,此时输出 deuce 而不输出 fourty all。测试用例(伪代码)如下:
input:3 vs 3,output:deuce
这个时候,对同3点的情况就特殊考虑,在相同点数下加一个if判断,如果是3点,则输出 deuce,否则输出 xxx all。
测试通过,未完待续,准备煮面
晚上交作业后再补充
不补充了