切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
设计模式
只有通过实践才能真正了解TDD
只有通过实践才能真正了解TDD
2020-04-19
设计模式
前端之家
前端之家
收集整理的这篇文章主要介绍了
只有通过实践才能真正了解TDD
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
软件构建学问中总有一些理论上很美好,但是一使用就面目全非的东西,比如传统的瀑布模型。敏捷里很多被称之为思想的东西,恰恰没有太高深的理论,但都是一些实践的艺术,强调动手做而不是用理论论证。TDD就是这样一种东西,单纯去研究它的理论,分析它的优点和缺点没有任何意义,因为它本身就是一个很单纯的东西,再对其抽象也得不出象“相对论”那样深厚的理论。问题是你做了没有?
支持
TDD的人有没有从实践中真正体会到了它的优点,对TDD不屑一顾的人是否通过实践验证了自己的看法,而不是简单的人云亦云? 我第一次实践TDD是在做“TMS 配置数据转换工具”时进行的,在那之前其实已经注意TDD的很长时间了,但是一直无从下手,感觉有很多“实际”问题没有头绪,比如“测试用例的粒度怎么确定?”,“是否是一个测试用例对应一个测试
函数
?”,“
函数
还不存在怎么
调用
,怎么传递参数?”等等。在做的时候才发现,其实所谓的“实际”问题只有在做的过程中才变得真实(也就是真正的实际问题),真实的问题通过努力就可以
解决
,如果不去实践,只能是越想越困惑。 通过几次“摸着石头过河”般的尝试(有成功的,也有失败的),我对TDD的认识开始从感性向理性转变,开始有了实质性的感觉,对于原来想象中的一些问题也积累了一些
解决方
案。我开始飘飘然,觉得TDD不过如此,so easy!直到后来有机会和邓辉一起用TDD对系统中一个模块重构时,我才发现我对某些方面的
错误
认识导致了一些
错误
的
方法
。通过两天的结对编程,以前实践中的一些
错误
做法,这一次都被邓辉纠正了。比如我以前喜欢先写一个空
函数
,定义好参数类型等信息,然后回过头来再写测试用例,我之所以这样做的原因是希望
代码
在TDD的过程中随时可以得到一个可编译通过的结果,但是邓辉认为在写那个空
函数
的时候就会不由自主地产生一些关于实现这个
函数
的想法,这些想法就会对编写测试用例产生影响,会约束编写测试用例时的思维空间,所以应该抑制住写
代码
的冲动,坚持先写测试用例。再比如,我以前针对某个
函数
写测试用例的
方法
是一次写完这个
函数
的全部测试用例,然后再去完成
代码
,直到
代码
满足所有针对这个
函数
的测试用例。邓辉认为要写一个测试用例,写一点
代码
满足这个测试用例,然后再写一个测试用例,再写一点
代码
满足这个测试用例,循序渐进。为什么要这样繁琐呢?因为这样做实际上缩短了反馈时间,实现
代码
时发现有问题就可以及时重构,对已经完成的测试用例影响比较小,等所有的测试用例都完成后再实现
代码
,这个反馈周期就太长了,一旦需要重构就会影响到所有的测试用例。 总结在软件构建过程中使用TDD的经验,我的体会就是只有通过实践才能真正了解TDD。对着很多理论空想只能使自己迷惘,迷惘的原因是知道自己不知道,却不知道自己不知道什么。只有在实践中遇到问题,才知道自己不知道什么,这是好事,因为对
解决
问题有了努力的方向。第一次实践TDD可以从简单开始,不一定要用xUnit之类的测试框架,使用简单的assert(断言)
函数
就行了,也不需要太大的规模,对一个
函数
TDD就够了。所以,实践TDD,就从你要完成的下一个
函数
开始吧。
上一篇:TDD,测试代码可以代替文档吗?
下一篇:PCB 工艺设计规范
猜你在找的设计模式相关文章
适配器模式-让不兼容的接口得以适配
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合...
作者:前端之家 时间:2021-02-24
策略模式-定义一个算法族
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独...
作者:前端之家 时间:2021-02-24
设计模式之高质量代码
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的...
作者:前端之家 时间:2021-02-24
模板方法模式-封装一套算法流程
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在...
作者:前端之家 时间:2021-02-24
迭代器模式-统一集合的遍历方式
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
作者:前端之家 时间:2021-02-24
单例模式的五种实现方式及优缺点
单例模式(Singleton Design Pattern)保证一个类只能有一个实例,并提供一个全局访问点。
作者:前端之家 时间:2021-02-24
组合模式-统一的处理个别对象与组合对象
组合模式可以将对象组合成树形结构来表示“整体-部分”的层次结构,使得客户可以用一致的方...
作者:前端之家 时间:2021-02-24
装饰者模式-动态的包装原有对象的行为
装饰者模式能够更灵活的,动态的给对象添加其它功能,而不需要修改任何现有的底层代码。
作者:前端之家 时间:2021-02-24
观察者模式-将消息通知给观察者
观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,当对象状态改变的时候...
作者:前端之家 时间:2021-02-24
代理模式-访问对象的代理而非其本身
代理模式为对象提供一个代理,来控制对该对象的访问。代理模式在不改变原始类代码的情况下...
作者:前端之家 时间:2021-02-24
编程分类
算法
设计模式
多媒体技术
正则表达式
Elasticsearch
Flink
Hadoop
IDE
最新文章
• 适配器模式-让不兼容的接口
• 策略模式-定义一个算法族
• 设计模式之高质量代码
• 模板方法模式-封装一套算法
• 迭代器模式-统一集合的遍历
• 外观模式-简化子系统的复杂
• 单例模式的五种实现方式及
• 组合模式-统一的处理个别对
• 装饰者模式-动态的包装原有
• 观察者模式-将消息通知给观
热门标签
更多 ►
受约束
摘*
day25
Java常用类库
置信
lamda
留存
持续录入
年后
正则表达式30
3.17
regularexpre
匹
多模
适
20130322
基础理论
pathmunge
涵义
reec
tok
需要转义的特
资源分享
validationex
简明魔法
里弄
形如
源码实现
完备
actionscript