学考易

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1809|回复: 0
打印 上一主题 下一主题

使用极限编程改善项目的设计和灵活性

[复制链接]

21

主题

21

帖子

22

积分

学考易小学一年级

Rank: 1

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
学考易 - 学习更轻松,考试更容易!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于本站|网站声明|联系我们|诚聘英才|Archiver|学考易 ( 闽ICP备15014917号-2 )

GMT+8, 2024-5-3 08:07

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表