WHAT
WHY
HOW
设计一个长度类库
使它可以计算这样的计算公式
1m / 4 + 10cm * 3 – 5mm
= 545mm
= 54.5cm
= 0.545m
测试:一次只写一个刚好失败的测试,作为新加功能的描述;
实现:不写任何产品代码,除非它刚好能让失败着的测试通过;
重构:只在测试全部通过的前提下,开始新加功能,或重构代码。
ASSERT_EQ(Length(10.5, "m"), Length(10.5, "m"));
ASSERT_EQ(Length(10.5, "m"), Length(1050, "cm"));
enum {M = 1000, CM = 10, MM = 1};
ASSERT_EQ(Length(10.5, M), Length(1050, CM));
Length(10.5, "m") + Length(10.5, "m")
Length(10.5, "m") - Length(5, "m")
Length(10.5, "m") * 5
Length(10.5, "m") / 5
……
出租车计价问题:
出租车的运价是每公里0.8元,八公里起会加收50%的每公里运价,起步价是两公里以内6块,停车等待时加收每分钟0.25元,最后计价的时候司机会四舍五入只收块块钱。
测试:一次只写一个刚好失败的测试,作为新加功能的描述;
实现:不写任何产品代码,除非它刚好能让失败着的测试通过;
重构:只在测试全部通过的前提下,开始新加功能,或重构代码。