巨星陨落,令人动容,仅以此帖略表崇敬与缅怀之情。
消息是从Grady Booch的blog了解到的,可惜没有找到单个帖子的链接。也可以参见John Vlissides Remembered或者John Vlissides。
伟大的程序往往来自于创造者的懒惰,因为他们实在是太懒了,不想一次又一次浪费自己的力气。
巨星陨落,令人动容,仅以此帖略表崇敬与缅怀之情。
消息是从Grady Booch的blog了解到的,可惜没有找到单个帖子的链接。也可以参见John Vlissides Remembered或者John Vlissides。
前面提到过没研究出怎么生成dot,刚刚看了源代码,发现原来是用-o
选项控制,如果输入文件后缀是dot就生成dot文件,同理可生成png、jpg等等。当然同时一定要使用-z
选项。
另外,一定要使用Cygwin Graphviz才行,如果没有可以自己build一个。
perltoot全称为Tom's object-oriented tutorial for perl。说实话,看了好几本书没学会怎么用Perl做OO,直到看了这份文档。
昨晚国米虽然赢了,但踢得不是很精彩(尤其是下半场),所以就拿出perltoot边看边听比赛。文档写得深入浅出,不愧称为tutorial,在吹响终场哨之前看完了这28页纸,基本上不再茫然了。不过开始看Accessing Class Data一节的时候不太明白,索性略过去,看到后来就明白了。
感觉用Perl做OO怪怪的,尤其是那个bless
,就没理解过(现在想来我的理解能力可能有点问题),后来学Scheme时看到Tagged data也没什么感觉,直到这次再学Perl的OO,联系起来才算明白了。不过,好像很多module都设计成能以OO方式运用,而且我打算尝试perlunit,不学不行啊。
这一段一直在学CppUnit,便想着也尝试一下PerlUnit,正好有些事情要用Perl,就下载了瞧瞧,里面提到了AutoDia,这个我梦寐以求的小工具。
其实Doxygen也可以生成类图,但是是作为文档的一部分,而AutoDia则可以生成独立的类图文件,除此之外,它不做任何其它的事情。
不过AutoDia也不是尽善尽美,它生成的Dia xml文件并不是最终结果,仍然需要load到Dia里面,再做手工布局,倒是利用GraphViz可以一步到位,不过它直接生成gif文件,还没研究出怎么生成dot。说实话,我差点就想自己写一个类似的工具,现在既然知道了AutoDia,那不妨在它的基础上实现自己的需求。
昨天在读《测试驱动开发:实用指南(影印版)》的时候突然发现自己对setUp()
的理解有错误,原以为setUp
和tearDown
在所有testMethod
运行前后只调用一次,还感到奇怪为什么不直接利用构造函数和析构函数。原来这两个方法是在每个testMethod
前后都要调用一遍,这才明白了它们存在的意义。
这种小册子很适合打印出来,然后在乘地铁时看,但我还是在上班时间看完了。:-)
第五章写得很好,还有第七章第一节。
有些地方跳过了,感觉离自己很远,尤其是后语那句“那是细节”,非常之不受用。文中曾经提到开发产品与做项目的区别,我想两者所适用的软件工程也应该是不同的吧。我用开发产品的感受去套用作者的经验,难免有误读之嫌!
希望有志于从事编程的人能够报着“取其精华、去其糟粕”的精神来阅读这本小册子,另一方面,带有贬低编程味道的软件工程书籍是最难被程序员接受的,所以,尽管有些反感,还是希望你能读完他,哪怕跳过其中你认为无趣的部分,毕竟它并不长。
附:
今天用搭建好的CppUnit做了人生第一次TDD,新手上路,难免显得笨手笨脚,但是仍然感受到了TDD带来的震撼。
首先,每个case都很小,使得发现问题、解决问题的速度很快,极大地缩短了开发周期。其次,这种测试方式使得每个模块不得不写得高内聚低耦合,而这恰恰是高质量软件的特征之一。
当然,工具虽好,也要会用才能发挥其威力。由于是初次使用,还无法做到从最简单的测试开始,上来就写个复杂的,当时还自以为够简单,等测试出了问题才发现有更简单的case没有写。这就好比等到产品出了问题才发现,原来其中一个部件没有测试过,实在不能算是正确的开发方式。陋习难改,还需多加实践啊!
仰慕TDD以久,一直找不到机会尝试。这次趁着release期间有空,开发了个patch,在应用了这个patch后,我们的编译器代码就可以利用CppUnit做白盒测试了。由于某些不可抗力的存在,这个patch不能check-in,不过因为受影响的几个文件基本不会更改,所以这种打patch的方式还能凑合着用,不至于有过重的维护负担。
有了CppUnit,就可以做Test-Driven Development。实践是检验真理的唯一标准,也是学习知识的最好方式。书读了两本,文档看了一对,可究竟怎么做TDD还是懵懂懵懂,没有一点感性认识。幸运的是,这样的日子即将成为过去,从明天开始,咱也TDD了:-)。