《The Productive Programmer》4

《The Productive Programmer》4

第二部分  实践

第六章  测试驱动设计

单元测试是一项提升代码质量的极佳实践 。经过测试的代码能更好地保证编码的意图和实际结果相符。测试驱动开发,因为坚持先写测试后写代码的方式,带来了更多的好处。当把软件工程和其他的工程科学进行比较的时候(我需要一些隐喻的表达)他们之间的重要差异就会显现。

  严格遵守TDD(测试驱动开发)的方式还回带来非常多的好处!TDD建立了一种消费意识:当你编写一个单元测试的时候,其实你正在创建待开发代码的第一个消费者。这让你思考,在测试之外,我们会如何使用这个类。

  很多开发人员都有这样的经历:在写一个大类的过程中,一路伴随着很多的假设或者臆断。然而当你真的开始使用这个类时,你才认识到一些假设是错误的。然后,你只好去重构代码。TDD要求你在写代码之前先创建它的第一个消费者,这会让你去思考其他代码最终会如何使用这些待开发的代码。

 

 

恩,从自己经手的几个项目来看,单元测试的确都是非常非常重要的。首先你需要保证的是你写的是100%正确的。。(这虽然不太可能)但起码当用户需求不变的时候,你的这个是正确的。把写代码和测试代码搞成一个螺旋开发的事实。。不断调整进度。。其实这样子才是最省时省力的方法。

 

  对设计的影响。TDD通过以下形式,来改进代码的设计:

  1 它帮你养成了很好的代码“消费意识”,因为在开始写代码之前,就需要创建第一个消费者。

  2 保持对及其简单的一些情况进行测试(以及持续不断地测试),能在你不小心把至关重要的基础设施破坏了之后及时的发出警告。

  3 对边界情况的测试是必不可少的。那些难以被测试的代码,可以把它们重构得更加简单,而如果真的无法简化他们的话,也应该想办法严格测试它们,不管多么困难。因为复杂的事情更需要测试

  4 永远保持把测试作为构建过程的一部分。软件中最奇怪的事情,莫过于在修改一块完全不相关的代码时,不小心出发的“副作用”。有了单元测试这张安全网,确实能替你节省很多的时间和力气。

  5 有一套健壮的单元测试,允许你进行一些异想天开的重构游戏(进行大量的修改,然后运行测试来看看这些修改所带来的影响)。记得第一次和一些已经习惯于单元测试的开发人员一起动手修改代码时,我也是非常紧张,因为大量的修改往往会破坏很多东西,但他们看起来丝毫没有犹豫。逐渐地,我也放下心来,因为我慢慢的认识到:有了测试的保证,完全可以发信大胆地去修改代码。

 

以上几条,的确是金玉良言啊!往往开发的成败与否,都在如此细节与习惯当中。

你可能感兴趣的:(《The Productive Programmer》4)