在软件工程的语境里,“敏捷流程”是一系列价值观和方法论的集合。软件界的一些专家肯定了流行做法的价值,但是强调敏捷的做法。

     敏捷开发的原则有很多,其中我注意到一个:敏捷流程欢迎的需求的变化,并利用这种变化来提高用户的竞争优势。

     很多时候,我们都对变化心怀畏惧。但敏捷流程反其道而行之,欢迎需求变化,适应变化,利用变化从而在软件行业市场上取得竞争优势。

     其次,还有别的原则像只有不断关注技术和设计,才能越来越敏捷。

     这是从与时俱进的角度出发,要求敏捷流程与世界的现先进前端技术保持脚步一致。

     诸如此类种种,从不同角度说明了敏捷做法的优点。

     但在阅读过程中,我产生了一些疑问:

     

这一小节提到了几种比较出名的敏捷开发方法论,如FDD、Scrum、XP、TDD。前三者在书中都有专门的介绍,但TDD,久闻其大名,到底是何许妙招?

TDD(Test Driven Development),即测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程。

测试驱动开发的基本过程如下:

① 快速新增一个测试

② 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过

③ 做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法

④ 运行所有的测试,并且全部通过

⑤ 重构代码,以消除重复设计,优化设计结构

简单来说,就是不可运行/可运行/重构——这正是测试驱动开发的口号。

可想而知,测试驱动开发会极为有效地控制开发中的bug,但是这种先写测试代码的方式可能让开发人员有很大的不适应。学习适应TDD的成本会不会比它带来的收益更高呢?这就有待我们在实践中摸索了。