任务6:提炼计算函数

好,走到这里,我们已经离一开始前进了许多:奇怪的命名不见了,魔法字符串已经被更表意的枚举类型Unit替代,表示英寸的f也被很轻松地改成了Unit.FOOT,收获不小!

接下来的任务,是消除一个不太明显的味道,也就是在as()方法中重复的new Length创建逻辑。仔细观察,其实Length对象的创建过程,唯一区别是在计算不同的value值。不过,要消除重复的对象创建代码,我们还得做点准备工作,那就是把这部分关于value的计算逻辑先剥离出来。

你的任务

Java:

git checkout task-6
./gradlew test

JavaScript:

git checkout task-6
npm test
  1. 动手之前,先花几分钟思考一下重构步骤:如何做到平滑替换?

  2. 严格按照重构步骤执行重构,频繁运行测试

  3. git checkout final看一下参考步骤,找出与你设定步骤的异同

  4. 多练几遍

参考资料

  • 《重构 2》6.1 提炼函数(Extract Function)

  • 《重构 2》10.3 以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clauses)

Last updated