昨天写了那篇关于语言特性的POST后,忽然想到DELPHI中可以利用编译器提供的自动接口引用计数来实现一种仿GC实现。所以回去就对HashMap作了一下重构。果然代码简化了不少,也好看一些了。改好后跑了一下测试,看到那个绿色的进度条我就放心了。幸好我在上周末写HashMap时,同时还用DUnit写了一个TestCase。
虽然我鼓吹TDD已经有一年多了,可是真正体会到TDD的好处这还是头一回。
以前之所以说得多,做得少,一方面是因为去年基本上没怎么写DELPHI的程序,所以DUnit也只是大致看了一下,没怎么用。ABAP是没有XUnit可用的,C++的CPPUnit只支持VC,boost里那个又不太好用。另一方面是因为对TestCase有无从下手的感觉,去年用DELPHI做那个WEB开发的东东涉及到很多WEB开发的细节,很难剥离出来进行测试。
但是这个HashMap就不同了,因为需求很明确,功能也很单一,很容易就能写出一个TestCase来。换成像序列化这样的就比较难,至少要手工创建一段正确的序列化数据就是一件麻烦事。
其实TDD也就这两个难点:一是XUnit工具,一是TestCase。
XUnit工具现在大多数语言都有了,只是好用不好用的区别。关键还是写TestCase,如何才能写出一个有效的TestCase是最大的难点。
TDD 如果是局部的測試, 我覺得已經不用懷疑, 但整個項目, 全局的保證, 還找不到這種感覺!TDD 主要還是取決于你對需求的了解!
用处肯定是不用怀疑的,但要怎么把它用好,还是有难度的。对需求肯定是要很了解,但要把需求通过TestCase表达出来则是一个难点。
[删除重写]Unit Test的作用是指导你在【开发过程】中不偏移自己的目标,本身也没有担负“全局保证”这样崇高的使命。只要做好它自己的本职工作就行了。至于“全局保证”么,留给功能测试、集成测试们去做吧。
最重要而常用的就是配合重构。^O^
TDD和tjjtds有什么关联吗?~-_-|||
xjj == xdd,所以tjj == tdd所以,tjjtds > tdd,因为一个tds了,一个没有,tjjtds,比tdd要狠好多!!