任务3:创建Player对象
进展到这里,我们仍然没有尝试去理解代码的结构,只是一直在进行“识别坏味道”-“消除坏味道”的动作。相反,通过一些简单的清理工作,我们似乎更多地了解到代码的一些含义,比如,我们重命名出来goldCoins这个变量,完全是从代码原有的日志中提取得到,这使我们知道,player正确回答了问题以后,会获得一枚金币。
消除了代码重复以后,整个类的代码行数已经有所减少,并且我们也隐约嗅到一丝其他的坏味道:我们提炼出了两个以getCurrentPlayerXXX()开头的方法,这似乎暗示着它在频繁伸手去操作“当前玩家”的数据——这正是一种“依恋情结”的味道,它意味着,某些数据放到Player这个对象上去可能会更好。
然而,我们目前为止还没有一个Player对象。因此,这一步的任务便是先创建一个Player对象,并将少量行为搬移到Player对象上。
你的任务
Java:
git checkout task-3-create-player-object
cd java && ./gradlew clean buildJavaScript:
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
Was this helpful?