任务3:创建Player对象

进展到这里,我们仍然没有尝试去理解代码的结构,只是一直在进行“识别坏味道”-“消除坏味道”的动作。相反,通过一些简单的清理工作,我们似乎更多地了解到代码的一些含义,比如,我们重命名出来goldCoins这个变量,完全是从代码原有的日志中提取得到,这使我们知道,player正确回答了问题以后,会获得一枚金币。

消除了代码重复以后,整个类的代码行数已经有所减少,并且我们也隐约嗅到一丝其他的坏味道:我们提炼出了两个以getCurrentPlayerXXX()开头的方法,这似乎暗示着它在频繁伸手去操作“当前玩家”的数据——这正是一种“依恋情结”的味道,它意味着,某些数据放到Player这个对象上去可能会更好。

然而,我们目前为止还没有一个Player对象。因此,这一步的任务便是先创建一个Player对象,并将少量行为搬移到Player对象上。

你的任务

Java:

git checkout task-3-create-player-object
cd java && ./gradlew clean build

JavaScript:

git checkout task-3-create-player-object
cd javascript && npm test
  • 创建Player对象

  • playerName字段搬移到Player对象

  • goldCoins字段搬移到Player对象

反思

  • 你从什么地方开始提炼类的工作?

  • 提炼的过程是否能保持代码时刻可以工作?

参考资料

  • 《重构 2》7.5 提炼类(Extract Class)

  • 《重构 2》8.1 搬移函数(Move Functions)

Last updated