选择区域语言: EN CN HK

敏捷开发中的“两顶帽子”

安铁

为了顺应软件行业大环境的发展趋势,公司在原有的CMM的V字型流程的基础上,也开始逐渐开始推行敏捷开发流程了。敏捷开发流程是质量部的同事们,分析了业界各种主流的敏捷开发技术后,为软件开发人员量身订做的一种全新的软件开发流程。相比起传统的CMM开发流程,敏捷开发流程具有生产率高、可持续交付、能够快速响应变化等优点。公司最初在几个项目试点后,都收到了不错的效果。

最近,我也有幸参与了一个采用敏捷开发流程的项目。项目规模本身不大,但正好用来熟悉敏捷开发的特点。为此,公司专门组织了为期两天的全脱产形式的敏捷开发培训。通过连续两天的密集培训学习,不仅使我了解到了敏捷开发的各个方面,而且使我对一些以前只是略有所闻的内容又有了更深刻的认识。不过,在培训的第二天,我发现对于“TDD与重构”这堂课,教学的效果并不是很好。由于缺少比较生动的例子,教师的讲解比较枯燥,听课的学员也普遍感到比较困惑。培训结束时征求大家的反馈意见,也有很多提到对这堂课不是很理解。大家对于在项目中如何进行重构,也没有比较清晰的认识。虽然质量部在推行敏捷开发时反复提到“重构”,但这个名词在大家眼里还很陌生。

巧的是,在大约一年前,我心血来潮地买了一本《重构——改善既有代码的设计》,并且在闲暇时间翻看了一些,我发现,关于重构所需要的知识在这本书里都能找到。比如,什么时候重构、如何重构、从哪里开始着手重构,甚至怎么对经理说明都写在书里了。这本书里所讲的重构方法,确实是敏捷开发中可用的一个利器。

当然,有理论,还要有实践。正好我参与的项目就遇到了需要重构的地方:原有代码功能耦合严重,添加新功能非常麻烦。这正好符合了书中提到的重构时机之一——“添加功能时一并重构”。当然,重构是需要工作量的,于是我们向QA申请,在这个阶段增加了一个故事点:“整理原有代码”(注:故事点是敏捷开发的特有名词,简单来说就是指每个阶段要做的一件件事情)。看,这就是敏捷开发的优点了,快速灵活,随时可以响应变化,而做的任何事情都可以很好的跟踪。接下来,就是具体的实施了,按照“两顶帽子”法则,把重构和添加新功能分开来做。而具体的重构的方法,则也不一而足:提炼函数、分解条件式、添加参数等等。重构完成后,各个功能点不再耦合了,代码不再冗余了,流程变得清晰了,这时再来添加新功能非常轻松,而且也不容易出BUG了。

事后回过来再看,重构的这些手段其实都挺简单的,一些老程序员也许会觉得还是凭自己的经验写更快一些。但是在大型的软件项目中,采用前人总结的这些方法,无疑可以使工作更加有序,更加清晰,更加受控,一旦出现BUG,也可以很容易的定位。

流程需要创新,思路、方法也需要创新。敏捷开发流程是公司的一项创新,而重构方法的使用也是我们普通开发人员在项目中的创新性应用。从中我们也看到了对于没有了设计环节的敏捷开发流程中,重构的重要性和它带来的好处。

不断的创新,大到流程,小到一点点开发项目的手段,必将使我们的生产率越来越高,使我们的代码更加的清晰、稳定,使我们的产品具有更强的竞争力。

感谢您对本刊物的关注,如果您在阅读时有何感想,请点击反馈。