任务5:消除依恋情结

上一步的操作可能比较细致,也比较繁琐,同学们可以切换到分支上,看看你的做法跟我的做法相比有什么差异。很多大型系统有一个典型的问题,就是对象太少了,很多行为没有归属到合适的对象上。“为一些数据项创建一个类”的动作虽小,却往往能促成深远的变化:对象一旦被创建,你将有机会得以观察行为的归属,进而把这些行为搬移到类上,大大优化系统的模块化和结构,而这一个个对象也“终于在它们的小社会中充分发挥价值”。

最直观的感受是:随着一些 log 被搬移到对象中,它们的数据取用链变短了,函数也变短了,代码的结构和形状隐约变得更加整齐。

观察一下搬移之后的代码,看看是否有函数或者中间层因此变得多余,看看有新的坏味道随着结构的清晰而涌现,看看是否有可以简单随手修复的小问题。这节课的任务,就是小小地清扫一下,消除这些明显的坏味道和小犄角,彻底消除掉“依恋情结”这个坏味道。然后,我们将稍微停下来,审视一下重构的成果。

噢,对了,还剩一个变量isGettingOutOfPenaltyBox看着实在扎眼,它的功能跟Player.isInPenaltyBox看来大同小异,请研究研究,是否能一并清除这个变量。

你的任务

Java:

git checkout task-5-eliminate-feature-envy
cd java && ./gradlew clean build

JavaScript:

git checkout task-5-eliminate-feature-envy
cd javascript && npm test
  • 其他可以做的小清理

  • 尝试消除isGettingOutOfPenaltyBox变量

Last updated