美文网首页
英制单位换算的TDD实战

英制单位换算的TDD实战

作者: 银河星尘 | 来源:发表于2019-10-30 16:14 被阅读0次

英制单位换算的TDD实战

项目需求

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

  • 1英尺(foot)= 12英寸(inch)
  • 1码(yard)= 3英尺

任务:写一个程序,用于处理英寸、英尺、码之间的换算。
你的程序应该能很好地处理下面这些换算关系:

  • 1英尺 应该等于 12英寸
  • 1码 应该等于 3英尺
  • 1码 应该等于 36英寸

源码:

https://github.com/libertyall/TddPractice

实现需求

1.新建测试类


image.png
  @Test
  void UnitConverter_Foot_Inch() {
    UnitConverter converter = new UnitConverter();
    Inch result = converter.conver(new Foot(1), new Inch(1));
    assertEquals("", "");
  }
1. 代码中存在着编译错误。
  1.没有UnitConverter类。
  2.没有Foot类和构造函数。
  3.没有Inch类和构造函数。

2.解决以上编译错误


image.png

1.创建UnitConverter类


image.png
2.创建Foot类
image.png
  1. 创建Inch类


    image.png

    4.简单实现UnitConverter类的conver方法


    image.png
    5.设置测试的断言
    image.png

    6.运行测试通过


    image.png
    7.重构UnitConverter类的conver方法,实现英尺与英寸的换算
    image.png
    8.增加英尺与英寸的换算测试
    image.png
    9.英尺与英寸的换算通过后,增加码和英寸的换算测试
    image.png
    10.实现码Yard的类
    image.png
image.png

11.UnitConverter类的conver方法不支持码这个单位


image.png

改写方法的入参为单位Unit


image.png

实现单位Unit类


image.png

将码Yard的方法和属性移到单位Unit中


image.png

重构码Yard让其继承Unit父类。


image.png

英尺和英寸类都进行重构,继承自Unit父类


image.png
image.png

先重新跑一下英尺和英寸的测试,避免代码修改引发问题


image.png

接着运行码和英寸的测试,测试无法通过


image.png

重构UnitConverter类的conver方法,使其可以支持根据单位类型使用不同的比率进行换算


image.png

运行英尺和码的测试,确认测试通过。


image.png

重构UnitConverter类,建立一个Map来保存码或英尺与英寸之间的换算比率。


image.png

重构UnitConverter类的conver方法,使其根据被换算的单位去获取跟英寸之间的比率


image.png

运行英尺和码的测试,确认测试通过。


image.png

创建码和英尺的测试,UnitConverter类的conver方法不支持换算成码


image.png

修改UnitConverter类的conver方法,将换算为哪个单位这个参数改为Unit父类,不再限定是英寸。


image.png

运行测试发现错误


image.png

因为只根据了被换算单位这个参数去获取比率,所以现在需要把被换算单位和换算为哪个单位结合起来


image.png image.png

第一个测试通过了,第二个测试未能通过,修改掉测试方法中的错误。


image.png image.png

测试通过


image.png

增加磅和盎司的测试


image.png image.png image.png

将测试预期值设为正确的比率应该换算得到的值


image.png

增加磅和盎司的换算比率


image.png

所有测试都通过


image.png

相关文章

  • 英制单位换算的TDD实战

    英制单位换算的TDD实战 项目需求 美国人习惯使用很古怪的英制度量单位。英制度量单位的换算经常不是十进制的,比如说...

  • 英寸与厘米

    英寸是英制单位,说白了就不是我国的计量单位,我们国家的公制单位常用的是米,当然,厘米也算是, 换算是:1英寸=2....

  • 中美ye sheng动物保护法的差异及相关英文

    回顾昨天的主题目: 中美之间的一些单位换算: 建立起一个概念就可以 美国用的是英制单位 英国,欧洲或者是中国的世界...

  • 单位换算

    一、分类 1、长度单位、面积单位、体积(容积)单位 巧记:记长度单位,平方零翻倍,立方零3倍 特殊:1公顷=100...

  • 单位换算

    张长占 济南市民生大街小学 谈话导入:这几年学了哪些单位换算? 生:时间,长度,体积,容积… 想想单位换算你们都是...

  • 单位换算

    换算公式 面 积 换 算 1平方公里(km2)=100公顷(ha)=247.1英亩(acre)=0.386平方英里...

  • 单位换算

    一公斤=2斤,一斤=500克,一两=50克,一斤=10两 一公里=2里,1里=500米

  • 利落地详解英制长度

    英寸(in) inch 最初来源大拇指长度 【一英寸=2.54cm 英制长度与米制长度换算基本关系】 英尺(ft)...

  • 摄氏度,华氏度

    相信很多初到美国的人最先吐槽的,就是他们使用的英制计量单位,哪怕没到美国,在书上电视上看到各种英制单位,也总是一头...

  • 2021-10-22多状态值的开发总结

    最近开发中遇到这种情况,某值是跟据单位进行换算的,假如有大小两种单位。换算方式是,大单位值*换算量 = 小单位值。...

网友评论

      本文标题:英制单位换算的TDD实战

      本文链接:https://www.haomeiwen.com/subject/oydovctx.html