乞丐版英制单位转换

用户头像
escray
关注
发布于: 2020 年 05 月 07 日
乞丐版英制单位转换

2020-05-06



遇到一个有趣的问题,就是在前面的代码中 assertThat 和 assertEquals 的选择,@熊节 老师说,感觉上 assertThat 的语法比较顺



assert that 1+2 is 3



而 assertEquals 是



assertEquals(expected, actual)



然后手速超快的 @George Pig 说,是 Kent Beck 埋的坑,然后给了一个历史久远的邮件列表,Kent Beck 说:



Line a bunch of assertEquals in a row. Having expected first makes them read better. And yes, it's too late to change it. — Kent Beck



今天还是使用 typing.io 来热身,做到了两次 50+,有进步。但是在实战营中,有 WPM 30 多的同学,可以把 FizzBuzz 控制在 7 分钟左右,而我大概还是处于 20 分钟的样子。



实战营的一道隐藏题目:



问题描述:美国人习惯使用很古怪的英制度量单位。英制度量单位的转换经常不是十进制的,比如说:



  • 1 英尺(foot) = 12 英寸(inch)

  • 1 码(yard)= 3 英尺



任务:写一个程序,用于处理英寸、英尺、码之间的转换



例如:1 英尺 应该等于 12 英寸



因为昨天看过一部分《测试驱动开发》,而这道题目有些类似,所以就会往 Money 的思路上去靠拢。不过首先还是尝试去分解一下任务:



1 foot = 12 inch

1 yard = 3 foot



难道我需要有三个不同的类么?



先发一个乞丐版:



// ConvertTest
package org.codingdojo.kata;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class ConvertTest {
    @Test
    public void should_return_12_inch_if_input_is_1_foot() {
        assertThat(new Foot(1).inchCount, is(12));
        assertThat(new Foot(2).inchCount, is(24));
    }
    @Test
    public void should_return_1_foot_if_input_is_12_inch() {
        assertThat(new Inch(12).inchCount, is(new Foot(1).inchCount));
    }
    @Test
    public void should_return_3_foot_if_input_is_1_yard() {
        assertThat(new Yard(1).inchCount, is(new Foot(3).inchCount));
    }
    @Test
    public void should_equal_when_two_inch_has_same_num() {
        assertThat(new Inch(1).inchCount, is(new Inch(1).inchCount));
    }
}
// Yard.java
package org.codingdojo.kata;
public class Yard {
    public Integer inchCount;
    public Yard(int num) {
        this.inchCount = 36 * num;
    }
}
// Inch.java
package org.codingdojo.kata;
public class Inch{
    public int inchCount;
    public Inch(int num) {
        inchCount = num;
    }
}
// Foot.java
package org.codingdojo.kata;
public class Foot {
    public Integer inchCount;
    public Foot(int num) {
        this.inchCount = 12 * num;
    }
}



发布于: 2020 年 05 月 07 日 阅读数: 25
用户头像

escray

关注

Let's Go 2017.11.19 加入

大龄程序员

评论

发布
暂无评论
乞丐版英制单位转换