作为一个程序员,获取知识是让我不断前进的动力,而读书是我获取知识的一条重要途径。在这个“经典”、“必读”过剩的年代里,大多数的书都仅仅扮演着传播知识的角色,真正改变自己对某些问题看法的书其实少之有少。限于读书时的眼界和能力,在我列表中,让我拍案惊奇的书只有几本。Martin Fowler的《重构》,严格说来,我并没有完整的读完这本书,不过,正如作者自己所说,这样的书原本就不指望能够读完,因为有一大部分其实是参考手册。正是我读过的部分让我知道了重构,让我知道这么做可以把代码写得更好。Robert Martin的《敏捷软件开发》,这是一本名字赶潮流,内容很丰富的书,这本书让我开始理解软件设计,从此不再刻意追求设计模式。Kent Beck的《测试驱动开发》,我读的是英文版,因为当时中文版还没有出版,所以,我不敢说,我通过这本书很好的理解了测试驱动开发,但它却为我打开了一扇门,让我知道了一种更好的工作方式。
有好长一段时间,这个列表没再更新过,中间虽然我也读了很多书,也学到了很多东西,但却没有哪本书如这几本书一样给我带来巨大触动。新近加入我这个列表的书是《修改代码的艺术》,英文名是《Working Effectively with Legacy Code》。
对于很多软件开发人员来说,加入一个公司,通常意味要面对一大堆之前留下的代码。而面对沉重的负担,大多数人的感觉都是无可奈何。让无奈成为往事,也就是这本书的价值所在。
在我看来,这是一本讲解如何编写测试的书。之所以遗留代码让人头痛,除了复杂的逻辑,改动会带来怎样的后果是一件让人心里没底的事,而测试的存在可以大幅度降低这种恐惧。但是,许多代码在开发时并不考虑测试,这样做的结果就是让测试几乎成为一件不可能完成的任务,一个常见的例子就是代码中访问数据库。即便写出测试代码,漫长的测试过程也会让它失去一部分应有的作用,我们希望得到的是快速的反馈。所以,对于无测试而言,知道编写测试是一种境界的提升,写好单元测试则是一种更高的境界。如果能够让测试驱动开发,从开发之初便考虑测试,并懂得如何写好测试,开发者应该不会陷自己于一种难为的境地,这也应该成为专业程序员应该具备的基本技能。
至于这本书的具体内容,我的评价是实用。具体的手法,很难在这里一一列举,但是,以我的开发经验来看,
许多似曾相识的代码不断的出现在书中,而作者举重若轻的处理手法,正是让我有拍案惊奇的地方。实际上,回味起来,每个手法都不是什么很高超的技法,但正是因为见识过类似的代码,才能体会到这种手法的价值所在。所以,相对于程序新人,它更适合有经验的人。
之所以说这本书更适合有经验的人还因为,这本书中谈及的内容涵盖设计、测试、重构等诸多方面:通过重构,解开代码内的耦合,让其可测。这恰恰是前面提到的那三本书所讲的内容。也只有懂得了这些基本内容才能体会到那些具体手法的价值所在。依然记得当年读《重构》时,在提取和内联之间迷茫了好久,直到后来经过了许多开发实践才体会到这些做法的真正含义。
如果说不足,那么,这本书缺乏一个列表,就像Martin Fowler为《重构》所做的那样,出什么样的问题,应该采用怎样的手法进行处理。
关于中译本,总的来说,翻译得很流畅,读起来比较舒服。不过,制作上还是有一些不太让人满意的地方。
* 译注太多,而且有些是低估读者智商的译注。
* 页边标有页码,似乎是为了与英文版对照,但文中的参考页码又是以中文版为准,显得有些乱。
* 书的装订不是特别令人满意,我一直担心从中间断开。
http://dreamhead.blogbus.com/logs/10413904.html
读《修改代码的艺术》
对“读《修改代码的艺术》”的回应
《修改代码的艺术》热门书评
-
读《修改代码的艺术》
38有用 1无用 dreamhead 2007-10-22
作为一个程序员,获取知识是让我不断前进的动力,而读书是我获取知识的一条重要途径。在这个“经典”、“必读”过剩的年代里,大多数的书都仅仅扮演着传播知识的角色,真正改变自己对某些问题看法的书其实少之有少。限于读书时的眼界和能力,在我列表中,让我拍案惊奇的书只有几本。Martin Fowler的《重构》,...
-
围绕重构来阐述如何修改遗留代码的不错的书
5有用 0无用 疯狂的菠菜 2009-09-14
这本书看的时间非常长, 断断续续有3个星期了吧, 不错的书, 至少对我来说是这样, 因为我现在就碰到了书中列出的种种问题:对已有的没有完善的单元测试的核心系统进行重构.为了保证少出乱子, 不出乱子, 我必须小心的对超大类, 巨型方法采用各种重构手段进行修改, 没有单元测试作保证的系统进行重构是非常危...
-
翻译的很一般,机械工业出版社
4有用 0无用 YigWoo 2014-07-20
买这本书的原因一是这本书确实是一本关于修改老代码的经典,二来翻译者是中国地区 InfoQ 的主编。但是入手看了大概到100多页之后实在是忍不住要上来吐槽一下。首先是翻译的通畅性,应该说是比较烂的水准<del>只能说是将将达到合格的水准,</del>这个可能是个人的偏见。但是我...
-
参考报价问题
3有用 1无用 rjnew 2007-10-23
我发现很多网页里卓越的报价常常比当当的高,可是实际情况是点击链接后卓越比当当低!比如这本书实际报价:卓越是46.5,当当是46.6不知道是不是最近卓越大范围调整了价格?!顺便说一下,在csdn读书频道上也有类似情况。...
-
写代码不是一件简单的事情
2有用 0无用 jerry 2009-09-11
《修改代码的艺术》看完了这本书很薄,但是看起来还是很吃力,里面介绍了很多重构的知识,而且有很多c++的内容,有的地方也是似懂非懂的,如果了解设计模式和重构,就会轻松很多,可能艺术这东西,本身就不容易懂吧。里面对单元测试的依赖性很强,其实还是一本不错的书,你完全可以领略到作者真的把代码的修改看成是一种...
书名: 修改代码的艺术
作者: Michael Feathers
出版社: 人民邮电出版社
原作名: Working Effectively with Legacy Code
译者: 刘未鹏
出版年: 2007-09-25
页数: 384
定价: 59.00元
装帧: 平装
丛书: 图灵程序设计丛书·程序员修炼系列
ISBN: 9787115163622