欢迎来到天天文库
浏览记录
ID:8146295
大小:39.50 KB
页数:13页
时间:2018-03-07
《使用极限编程改善项目设计和灵活性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用极限编程改善项目的设计和灵活性 这个过程会频繁地重复,每次进行测试均是为了保证产品的正确性。设计、编码和测试三者之间的鸿沟将不再存在,这样可以促进你对整个环境更好地理解。因此,你的设计(和编码)将随着项目的成熟逐步得到改善而非降低。 使TDD更加有效的原因是单元测试自动化,而且这些自动化单元测试的工具可以从Internet上免费获得。虽然没有简化功能版的商业产品,但开发人员可以合理地使用这些高质量的软件。本文将指导你怎样获得和使用Nunit并通过C#(或者任意一种基于Microsoft.NetFramework的语言)开发实践TDD。注意到类似的工
2、具对于C++和Java开发人员也是可用的,因为他们支持大多数语言和操作系统。这些工具与极限编程紧密地结合起来,扩大了TDD应用的范围。 随着项目的逐渐成熟,难道你不愿意自己编写代码的道路通向坦途,而非走向荆棘丛生的崎岖小径?似乎看起来不管你采取什么方式,编码之路迟早会走向迷途。项目越大,困难越多。有多少次当你以一个近乎完美的设计开始你的项目,然而一旦开始编码,你会发现自己事实上只看到了项目的局部? 测试驱动开发(TDD)改变了编码的过程,并且这种改变不仅是可能的,同时也是值得去做的。开发包括三方面的活动:编写测试用例,编码并进行测试,重构代码以消除重复
3、代码使其更简单、更灵活、更容易理解。 这个过程会频繁地重复,每次进行测试均是为了保证产品的正确性。设计、编码和测试三者之间的鸿沟将不再存在,这样可以促进你对整个环境更好地理解。因此,你的设计(和编码)将随着项目的成熟逐步得到改善而非降低。使TDD更加有效的原因是单元测试自动化,而且这些自动化单元测试的工具可以从Internet上免费获得。虽然没有简化功能版的商业产品,但开发人员可以合理地使用这些高质量的软件。本文将指导你怎样获得和使用Nunit并通过C#(或者任意一种基于Microsoft.NetFramework的语言)开发实践TDD。注意到类似的工具
4、对于C++和Java开发人员也是可用的,因为他们支持大多数语言和操作系统。这些工具与极限编程紧密地结合起来,扩大了TDD应用的范围。 为什么设计会降低性能 大多数传统软件开发过程是基于你在设计之初正确的设计与估计,并通过开发以形成完美的产品。这种开发方式保证了产品的统一性和之间的最小差异。然而这一过程却忽略了交流与反馈,同时也不利于生成错误信息(测试失败),并因此制定策略采取相应的措施(修复设计),而这些正是TDD所重视的。 为什么我们不能在开始就获得正确的设计?因为在开发时,处于项目之初的我们无法获得有关这个软件完整的知识。迭代式开发虽然也认同这一
5、事实,并帮助你在项目开发初期识别一些重要的问题,而不是把这些问题留在后期解决。然而,迭代法无法终止开发过程,使你回到设计阶段来解决问题,哪怕这只是因为一个命名糟糕的公共类名。没有人愿意关注这些细小的问题,且不幸地,这种设计过程也禁止这种更新,因为在各个阶段不停重复的代价太高。 传统开发过程中的这些小问题一旦积累起来,会导致大问题的发生。你或许认为与其将时间耗费在这些对功能影响不大的细枝末节上,还不如将精力放在更重要的环节。然而,这个命名糟糕的公共类在代码中保留的时间越久,则相关的使用也会越来越多,改变起来就越来越困难。之后,团队会在编码的时候非正式地修改
6、这些问题,很快,在计划发布整个产品时,你会做大量的工作尽量使代码和设计文档保持一致。对于这种情况来说,你之前的设计是没有价值的,因为代码本身就说明了设计。测试驱动开发允许你推迟决定,直到你更好地理解了问题之所在。当你只是了解到产品开发的一些基本信息时,你不必设计出完美的体系架构。这对于传统软件开发中已经确定的理念来说,是一种挑战,从某种角度来说,甚至是违反常规的。因此我们建议你以一种开放的思想来尝试TDD,你会发现TDD的强大。 TDD的另一个好处是更容易掌握。你开发的一系列测试说明了代码的运行机制,这种程序自我编档的方式促进了交流。它要求你通过概览测试
7、用例并阅读自己的代码来获得反馈,从而有利于你创建的对象和组件更趋于松散耦合。同时,TDD可以推迟你的设计决策,从而简化设计,使你能集中精力修正设计的问题。最后,它通过给出的一系列测试减轻你编码的压力,因为当测试发生中断时,它可以立即告诉你究竟发生了什么。 简介 要真正理解TDD,唯一的办法就是实践。让我们从一个简单的例子开始,这个例子并不要求任何特殊的工具。我们要写一个小程序,来帮助我们规划住宅前的一块长方形的草坪,但在设计之初,我们需要作两个测试:当长度为3,宽度为2时,计算得到的面积应该为6;同时计算其周长应该为10。 写下这些测试有助于我们将焦
8、点集中到程序的一些要点。在这个例子中,似乎创建一个对象来模拟问题域
此文档下载收益归作者所有