《ThoughtWorks文集》读后感

来源:互联网 发布:qq群添加成员软件 编辑:程序博客网 时间:2024/04/27 22:41

9月在北京参加AgileChina2009时,正好赶上《软件开发沉思录—— ThoughtWorks文集》正式出版,或者说是这本书为了这次大会提前上架了,会场上TW的Michael Robinson还在自己的主题演讲结束后小小介绍了一下这本书,不过我并没有在展台上仔细翻阅。说实话,对TW的这本书还是有些期待的。

 

前阵子收到了图灵寄来的样书,仔细读了一下,还没有全部读完,怎么说呢,总觉得离我的预期还差了这么点,也许是我的期望值过高吧。。。

全书由13篇不同人撰写的文章组成,相对比较独立,但其实前后顺序还是有些讲究的,例如第7章讲了什么是迭代经理,马上第8章作者就是一名迭代经理,来讲项目生命体征。下面挑几个章节来讲讲我的感受吧。

Martin Fowler的文章当然不能错过,写的很实在,完整地讲解了如何用Ruby来实现DSL,代码很详实,原来DSL是这么炼成的。文中提到了很多实现DSL的方式和技巧,让我这个不太精通Ruby的人对Ruby又有了一些新的认识。

第4章给人的感觉就是在介绍各种各样的语言——语言的盛景,现在的开发者有很多语言上的选择,但事实是这样吗?对于大多数一线开发者来说,能够选择的也就那几种主流语言,导致我们对其他语言的关注度并不高,听说过Haskell、Erlang的应该不少,但知道Scheme、Prolog的估计就不多了,毕竟也不太有机会能用上,但学学Ruby、Groovy、Scala、Erlang应该还是有好处的,至少挑一种来了解下吧。文中分几个不同的视角来介绍了语言的特性,做了些总结,也许是作者Rebecca J. Parsons不太喜欢.Net吧,全文读下来基本就没怎么提到.Net。

第5章多语言开发是我比较想读的部分,当然我本人非常支持这个观点,而且也在积极推行和实践,更重要的是之前这章已经被人批评过了,我想仔细看看究竟是为什么。比较同意Jeffrey Zhao在自己博客里的观点,主题是好的,是应该支持的,可是这例子举的实在是不怎么样,就说JRuby实现的isBlank吧,写Ruby时知道String有strip,难道写Java时就不知道String有trim吗?话又说回来,能动态地为类增加方法是个不错的功能,这也是动态语言的优点,的确该好好利用,我就算各打五十大板吧,也许这里换个例子会更好些。用JRuby来测试Java代码的范例中,我并没有感觉用Mocha和用JMock有太多的差别,反倒是在一个团队中,如果别人都不会Ruby,那作为团队的一员自己也不该使用JRuby进行测试,别人看不懂跑步起来啊。

第6章对象健身操,其中提出的几条规则之前我已经在gigix的博客中看到了,感觉应该当作推荐规则来看待,真的要落实到实际代码中,完全照做有不小的难度,而且还要根据不同的场景进行筛选,需要自己进行判断什么时候该用什么时候不该用。举例来说,拒绝使用else,文章给出的范例除了“提前返回”,其他还是在用else(三元运算符应该也算分支吧),依我看,为了实现代码,真的遇到需要else时,该用还得用;一行代码只有一个“.”运算符,那前面Martin Fowler提出的DSL的方法链怎么办,人家可是一排的“.”啊;不使用任何Getter/Setter/Property,IoC的Setter注入怎么办?统统换构造器注入?我要是不是JDK 1.5,也用不了基于注解的方式,那该怎么办?不过像不要使用缩写和保持实体对象简单清晰还是应该坚决落实的,这应该算是在任何场景下都适用的。

ThoughtWorks作为业内知名的咨询公司,我倒是比较期望看到有本书来介绍下TW的员工在客户现场是如何工作的,遇到问题如何解决的。就有点像DBA日记那样,一个个的故事和案例,虽然我不做DBA,可是看网站上连载的故事还是蛮有意思的,就算不懂那些深奥的知识,当小说看也不错,呵呵。如果以后能有这么一个文集,我一定会仔细阅读的。

原创粉丝点击