项目总结

在极限编程的实践中,测试驱动开发与重构总是如影随形。在我们看来,根本就不应该有“花大段时间重构”这样的事情发生。重构应该贯穿在整个开发过程中:写 5 分钟代码,花上 20 秒重构,这才是敏捷软件开发应有的节奏

但是,我们总有遇上祖传代码的时候。它们缺乏测试、质量不佳、结构混乱。想在这样的代码基础上做任何事都会步履维艰。我们必须掌握进行较大规模重构的技能,才能有效应对祖传代码带来的挑战,才能真正把敏捷应用到最核心的系统。

在这个项目里,我们见识了镶金玫瑰商店的祖传代码。刚一接手,我们完全不知道应该拿这堆复杂的代码怎么办。但随着一步步重构进行,代码变得清晰易读,业务规则自然地从代码中浮现出来。

在这个过程中,我们做了下列练习:

  • 用“录制/回放”的办法,为祖传代码搭建安全网;

  • 跟随 IDEA 的提示对代码做最基本的清理;

  • 提炼并重组代码中的大块逻辑,把行为放到适当的对象;

  • 消除魔法字符串;

  • 用工厂方法封装对象的创建过程;

  • 建立继承体系;

  • 用多态取代复杂的条件逻辑。

整个重构过程中,我们坚持了小步前进的原则:每次只做很小的修改,每次修改之后都运行所有测试,确保软件行为保持不变。这样做的结果是,我们可以在任何一分钟暂停重构,提交代码,去处理一些别的事情,回头再接着重构。祖传代码不会一夜之间被清理干净,我们要保持“日行一善”、持续改进的节奏,不能因为步子迈得太大把自己陷在泥潭中进退两难。

在重构过程中,IDE 的支持非常重要。像 Intellij IDEA 这样出色的 IDE,可以自动化很多重构步骤,从而大大降低重构出错的几率。作为程序员,我们也必须摸熟 IDE 提供的重构支持功能,才能在需要的时候能得心应手地使用。

Last updated