测试驱动开发

来源:互联网 发布:如何在淘宝上开好网店 编辑:程序博客网 时间:2024/05/18 12:38

    我感觉自己现在就像是现代社会的农民工,唯一能做的就是搬砖。但是砌墙的工作都不会给我这种只会搬砖的小工来做,更别提设计一栋大楼,盖起一堵墙了。在做软件中,缺乏思考真的是一件悲哀的事情。我就感觉自己有点画地为牢了,总是以为代码的世界就是一堆堆砖块罗列起来的。现在我在提高班百无聊赖时就觉得人丑就要多读书,不断阅读关于软件设计和代码质量的书籍。善于站在巨人肩膀上,在书本上听取江湖老前辈的谆谆教诲。这些书本给我思想上带来了新的感受和认识。

     模块的设计是战略上的,而模块内接口的设计是战术上的,至于接口的实现,只能是小工来搬砖的工作了。(虽然小工的水平差异也是巨大的)我个人理解这个观点就像我们的电脑一样,战略上我们要先设计主板分哪些区,干什么用,如何交互。主板上的模块划分好后,剩下的战术问题就是如何对外提供接口了。如果接口也都设计好了,那么我们直接告诉第三方商家针对我们的接口做出实现。因为有了接口,我们关于实现可以分工非常细微,有利于编写出高质量的小型部件。

     这里我不是主要讨论如何设计代码,本文我主要想阐述一下我对如何砌墙的理解。首先,建筑工地里,大工先用一根线水平放在一个墙基上,从而由小工搬砖来砌墙,这样有了一个基准就可以保证墙是笔直的。测试驱动开发,强调编码实现都必须要在控制之内,所以测试先行的概念就非常新。我们传统的开发都是“设计”-“编码”-“测试”,而测试驱动开发颠覆了我们的认识,它的顺序是“测试”-“编码”-“重构”。

    这种小步测试的开发保证了我们编码的正确性,虽然没有实践过这种开发模型。但是我被书中介绍的思想深深吸引,现在才意识到自己以前的开发效率其实是很低的。在学习前人这些思想的同时,我感觉自己又提高了一个高度来思考所处的软件开发的到底是什么。不同阶段对软件开发的本质有不同的理解。

0 0
原创粉丝点击