按契约编程和测试驱动开发
来源:互联网 发布:js高手进阶之路 编辑:程序博客网 时间:2024/06/05 00:35
一直以来,我总觉得按契约编程是assert()宏的延伸,不够现代,作用和测试驱动开发不能相比。测试驱动开发能够覆盖设计,编码,回归兼容测试等各个 领域。
但是任何工具/方法都有它的适应面,如果不是,按契约编程也就不会出现了。总的来说,按契约编程台阶较低,而测试驱动开发对开发者的要求较高。
1. 测试驱动的运行环境和程序的正式运行环境不同,而契约则是合一的。也就是说不需要单独准备测试运行环境。想想测试驱动开发使用的mock和模拟器。有多少人愿意仅仅为了测试而构造这些代码,这些代码没有实际产出。使用契约,则不需要创建/模拟运行环境。
2. mock和模拟器需要极高的编程技巧,不是所有人都有这个能力或者时间。软件开发常常有很大的压力。
3. 测试驱动开发常常是测试优先驱动开发,即先写测试后写实现。对已有代码添加测试,往往缺乏动力,而且通常是非常困难的。因为代码要便于单元测试,需要做设计上的安排,尽量剥离对其他类库和环境(比如数据库,文件,网络)的依赖。契约编程则不一样,随时都可以添加契约,甚至一边阅读别人的代码一边添加。
测试驱动开发结合重构产生优秀的设计和代码,按契约编程则更利于工程和监管。绝大多数的软件开发者都没有构建完美代码的愿望,没有动机,就不会有行动。而按契约编程则是提供质量最直接,最方便的方式,更能面对任务压力,所以较易实施。
但是任何工具/方法都有它的适应面,如果不是,按契约编程也就不会出现了。总的来说,按契约编程台阶较低,而测试驱动开发对开发者的要求较高。
1. 测试驱动的运行环境和程序的正式运行环境不同,而契约则是合一的。也就是说不需要单独准备测试运行环境。想想测试驱动开发使用的mock和模拟器。有多少人愿意仅仅为了测试而构造这些代码,这些代码没有实际产出。使用契约,则不需要创建/模拟运行环境。
2. mock和模拟器需要极高的编程技巧,不是所有人都有这个能力或者时间。软件开发常常有很大的压力。
3. 测试驱动开发常常是测试优先驱动开发,即先写测试后写实现。对已有代码添加测试,往往缺乏动力,而且通常是非常困难的。因为代码要便于单元测试,需要做设计上的安排,尽量剥离对其他类库和环境(比如数据库,文件,网络)的依赖。契约编程则不一样,随时都可以添加契约,甚至一边阅读别人的代码一边添加。
测试驱动开发结合重构产生优秀的设计和代码,按契约编程则更利于工程和监管。绝大多数的软件开发者都没有构建完美代码的愿望,没有动机,就不会有行动。而按契约编程则是提供质量最直接,最方便的方式,更能面对任务压力,所以较易实施。
- 按契约编程和测试驱动开发
- 结对编程和TDD(测试驱动开发)
- 测试驱动开发和IOC
- Nodejs的测试和测试驱动开发
- 测试驱动开发和重构
- WCF契约设计: 服务契约,数据契约和消息契约
- WCF服务编程设计规范(3):服务契约、数据契约和实例管理设计规范
- 测试驱动的面向接口编程的开发流程
- 测试驱动开发与极限编程思想浅析
- 极限编程的重要特点---测试驱动开发(zt)
- 极限编程的重要特点---测试驱动开发
- 极限编程的重要特点---测试驱动开发
- 极限编程的重要特点---测试驱动开发
- 《Agile Java中文版 测试驱动开发的编程技术》读书笔记
- Python 高级编程笔记之测试驱动开发
- 手动测试驱动编程
- (四)、WCF契约编程
- WCF编程之契约
- C#列出局域网中可用SQL Server服务器
- IDC发布2007年存储行业十大预测
- 在C#中如何实现Form与Form之间的通信
- new和malloc的区别
- 闪存将改变PC存储技术?
- 按契约编程和测试驱动开发
- Visual C#常用函数和方法集汇总
- Visual C#常用函数和方法集汇总
- VC通过HTTP方式获取网页
- 茫然
- flex 下载文件
- java和VB一样,右斜杠是整除
- 应用AXIS开始Web 服务(一)(二)(三)
- 系统管理详细设计