重构(Ruby版)(china-pub首发)
基本信息
- 作者: (美)Jay Fields Shane Harvie Martin Fowler [作译者介绍]
- 译者: 徐旭铭
- 丛书名: 开发人员专业技术丛书
- 出版社:机械工业出版社
- ISBN:9787111300786
- 上架时间:2010-5-5
- 出版日期:2010 年4月
- 开本:16开
- 页码:294
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > Rails/Ruby
编辑推荐
本书是对Martin Fowler的经典权威著作《重构》的重大更新版,并以Ruby为例彻底重写
作者借用Fowler最初的想法,展示了如何以一种受控、高效以及迭代的方式进行重构,帮助你有条不紊地改善代码的质量而不会引入新的bug。不论是编写还是维护Ruby代码,本书都将是不可或缺的重要参考
推荐阅读
内容简介回到顶部↑
书籍
计算机书籍
本书是一本专门为职业ruby程序员编写的重构指导。它的目标是向你展示如何以一种既受到严格控制又高效的方式进行重构。你将学习到不在代码中引入bug并能按部就班改进结构的重构方式。本书的主要内容:第1章指出重构是什么;第2章讨论进行重构的理由;第3章指出需要进行重构的信号;第4章讨论测试在重构中扮演的重要角色;第5章~第12章介绍了重构花名册,它包含了在重构领域里到目前为止的成果。当需要进行某项任务时,这份花名册可以手把手地提醒我们安全的做法。
本书是对martin fowler的经典权威著作《重构》的重大更新版,并以ruby为例彻底重写——并非只是把代码从java版中搬过来而已。
书中给出了一份详细的重构花名册,包含超过70条经过锤炼的ruby重构技术,每一条都有详细指引、使用细节和范例代码。其中很多重构技术都用到了ruby专有的强大特性,你可以从华章网站下载到全部代码。
作者借用fowler最初的想法,展示了如何以一种受控、高效以及迭代的方式进行重构,帮助你有条不紊地改善代码的质量而不会引入新的bug。不论是编写还是维护ruby代码,本书都将是不可或缺的重要参考。 本书内容
理解重构的核心原则,以及进行重构的原因
发现ruby代码中的“坏味道”
逐步将糟糕的设计转变成设计精良的代码
构建测试以便保证重构正确进行
理解重构中的难点以及克服的办法
编写正确包装代码的方法
在对象之间移动特性,将其放在最适合的地方
将数据组织成更容易处理的形式
简化条件表达式,更高效地利用多态
创建更易于理解和使用的接口
进行大型重构,这将可能影响整个软件系统数月乃至数年
成功重构ruby on rails代码
计算机书籍
本书是一本专门为职业ruby程序员编写的重构指导。它的目标是向你展示如何以一种既受到严格控制又高效的方式进行重构。你将学习到不在代码中引入bug并能按部就班改进结构的重构方式。本书的主要内容:第1章指出重构是什么;第2章讨论进行重构的理由;第3章指出需要进行重构的信号;第4章讨论测试在重构中扮演的重要角色;第5章~第12章介绍了重构花名册,它包含了在重构领域里到目前为止的成果。当需要进行某项任务时,这份花名册可以手把手地提醒我们安全的做法。
本书是对martin fowler的经典权威著作《重构》的重大更新版,并以ruby为例彻底重写——并非只是把代码从java版中搬过来而已。
书中给出了一份详细的重构花名册,包含超过70条经过锤炼的ruby重构技术,每一条都有详细指引、使用细节和范例代码。其中很多重构技术都用到了ruby专有的强大特性,你可以从华章网站下载到全部代码。
作者借用fowler最初的想法,展示了如何以一种受控、高效以及迭代的方式进行重构,帮助你有条不紊地改善代码的质量而不会引入新的bug。不论是编写还是维护ruby代码,本书都将是不可或缺的重要参考。 本书内容
理解重构的核心原则,以及进行重构的原因
发现ruby代码中的“坏味道”
逐步将糟糕的设计转变成设计精良的代码
构建测试以便保证重构正确进行
理解重构中的难点以及克服的办法
编写正确包装代码的方法
在对象之间移动特性,将其放在最适合的地方
将数据组织成更容易处理的形式
简化条件表达式,更高效地利用多态
创建更易于理解和使用的接口
进行大型重构,这将可能影响整个软件系统数月乃至数年
成功重构ruby on rails代码
作译者回到顶部↑
本书提供作译者介绍
Jay Fields 是DRW Trading公司的一名软件程序员,也是一位研讨会的常客。Jay对发现和成熟化创新式解决方案总是抱有激情。Jay的个人网站是:www.jayfields.com。
Shane Harvie 在美国、印度和澳大利亚等国的敏捷公司中从事软件开发工作。他现在位于芝加哥的DRW Trading公司工作,个人网站是:www.shaneharvie.com。
Martin Fowler 是ThoughtWorks公司的首席科学家,他是一位作家、演说家和咨询师,经常在软件开发活动中发表演讲。他关注的是企业软件设计——诸如什么能产生良好的设计,而良好.. << 查看详细
Shane Harvie 在美国、印度和澳大利亚等国的敏捷公司中从事软件开发工作。他现在位于芝加哥的DRW Trading公司工作,个人网站是:www.shaneharvie.com。
Martin Fowler 是ThoughtWorks公司的首席科学家,他是一位作家、演说家和咨询师,经常在软件开发活动中发表演讲。他关注的是企业软件设计——诸如什么能产生良好的设计,而良好.. << 查看详细
目录回到顶部↑
译者序
序
前言
致谢
第1章重构初体验
1.1起点
1.1.1movie
1.1.2rental
1.1.3customer
1.1.4对起始程序的评价
1.2重构第一步
1.3statement方法的分解和再组合
1.3.1移动amount的计算
1.3.2提炼常客积分的计算
1.3.3移除临时变量
1.4用多态替换价格代码中的条件逻辑
1.5小结
第2章重构的基本原理
2.1重构的起源
2.2重构的定义
序
前言
致谢
第1章重构初体验
1.1起点
1.1.1movie
1.1.2rental
1.1.3customer
1.1.4对起始程序的评价
1.2重构第一步
1.3statement方法的分解和再组合
1.3.1移动amount的计算
1.3.2提炼常客积分的计算
1.3.3移除临时变量
1.4用多态替换价格代码中的条件逻辑
1.5小结
第2章重构的基本原理
2.1重构的起源
2.2重构的定义
译者序回到顶部↑
本书英文版的出版距离第一本《重构》出版已经有十年了,即使是中文版也有六年之久。侯捷和熊节的译本质量很高,只是当时我还在大学里懵懵懂懂,读了几页就扔掉了,知道它在讲什么,但是不知道要怎么用。另一本让我有这种感觉的则是《设计模式》。这样的书并不难读,作者能以非常浅显的方式把问题讲解出来,但是要真正读懂其中的内容,却不是一朝一夕可以做到的。正如书中最后提到的,本书中所讲解的只是基本技术,它们彼此之间是相对孤立的,要做到融会贯通还需要大量的实践经验。正所谓“学而不思则罔,思而不学则殆”。
工作以后渐渐接触到一些大型系统,有些代码甚至比我的年龄还要长,当时看起来聪明的设计已经不太适合现在的要求了,这时再读它们的感觉自然大不一样。前辈们总结了多年的经验,让我们可以不必摸着石头过河。好的软件不是写出来的,而是改出来的。设计模式能让你保持在大方向上不会脱轨,而重构则能让你在面对变化时不至于手足无措。
这本书是为Ruby而写,所有的示例都替换成了Ruby。作为一门灵活的动态语言,Ruby很多时候都不需要像在Java里重构那样束手束脚。另外,很多现代的IDE都已经具备了基本的重构能力,可以让你避免一些烦琐的复制粘贴。因此在第1版中有些显得相当繁复的步骤在Ruby里变得十分简练,这就让我们可以更加关注重构的本质,不会陷入语言的细枝末节。因此,虽然在这本书里针对十年来重构技术的进步进行了相应的更新,并且添加了一些针对Ruby的内容,但是页数并没有超出第1版。
前面说到,《重构》第1版的中译本水平很高,在翻译本书的过程中,我自然倍感压力,不敢砸了前人的招牌。在此感谢陈冀康老师给我这个成为本书译者的机会。由于水平所限,错误和不妥之处在所难免。恳请专家和同行批评指正,也希望使用本书的读者给予批评和建议,不胜感激。
徐旭铭
2010年初
工作以后渐渐接触到一些大型系统,有些代码甚至比我的年龄还要长,当时看起来聪明的设计已经不太适合现在的要求了,这时再读它们的感觉自然大不一样。前辈们总结了多年的经验,让我们可以不必摸着石头过河。好的软件不是写出来的,而是改出来的。设计模式能让你保持在大方向上不会脱轨,而重构则能让你在面对变化时不至于手足无措。
这本书是为Ruby而写,所有的示例都替换成了Ruby。作为一门灵活的动态语言,Ruby很多时候都不需要像在Java里重构那样束手束脚。另外,很多现代的IDE都已经具备了基本的重构能力,可以让你避免一些烦琐的复制粘贴。因此在第1版中有些显得相当繁复的步骤在Ruby里变得十分简练,这就让我们可以更加关注重构的本质,不会陷入语言的细枝末节。因此,虽然在这本书里针对十年来重构技术的进步进行了相应的更新,并且添加了一些针对Ruby的内容,但是页数并没有超出第1版。
前面说到,《重构》第1版的中译本水平很高,在翻译本书的过程中,我自然倍感压力,不敢砸了前人的招牌。在此感谢陈冀康老师给我这个成为本书译者的机会。由于水平所限,错误和不妥之处在所难免。恳请专家和同行批评指正,也希望使用本书的读者给予批评和建议,不胜感激。
徐旭铭
2010年初
前言回到顶部↑
差不多十年前,我(Martin)曾经和Kent Beck一起做过一个项目。这个项目的名字叫C3,它后来成为极限编程诞生的标志性项目,并帮助我们看清了敏捷软件运动的方向。
我们从那个项目里学到了很多东西,不过真正震撼到我的是Kent那种有条不紊、持续不断改进系统设计的风格。一直以来我对编写干净的代码都抱有极大的热情,坚信花时间去清理有问题的代码,以便让团队能更快捷地开发功能是非常有价值的事情。而Kent向我介绍了一种很多顶尖Smalltalk程序员使用的技术,它能让我的工作效率成倍提升。这是一种他们称之为重构的技术,我很快就变得想要在任何场合下都把它介绍给别人。但是市面上没有任何出版物或是类似的资源可以让我指引人们去自己学习这项技术。既然Kent和其他Smalltalk程序员都没意愿要写一本,所以我就决定自己动手了。
结果我的那本《重构》大受欢迎,在重构成为主流技术的过程中看起来还扮演了相当重要的角色。随着近年来Ruby的兴起,给这本书写一本Ruby版是很有意义的,为此我拉来了Jay和Shane。
什么是重构
重构是改变软件系统的过程,它不会改变代码的外部行为,但是可以改善其内部结构。它清理代码的严谨方式能把引入bug的风险降至最低。基本上当你进行重构的时候,就意味着代码的设计在完成时会得到改善。
很多人觉得“代码的设计在完成时会得到改善”这种说法相当古怪。多年来大多数人都相信设计第一、编码第二的原则。而随着时间的推移,不断修改代码以及系统的完整性后,原本设计的结构也会慢慢变得模糊。代码逐渐从一项工程活动沦落为敲敲打打的修补工作。
重构与此正好相反。有了重构,你可以把一个糟糕甚至混乱的设计,逐渐转变成设计良好的代码。每一个步骤都非常简单,甚至有点过分简单了。比如把一个实例变量从一个类移到另一个类,从一个方法里抽出一些代码单独放到一个方法里去,以及在层次体系之间移动一些代码等。但是这些小改动累积起来却能够彻底改进设计。这和通常认为的软件衰败论的观念是完全相反的。
在重构的时候你会发现工作的重心发生了变化。设计不再是最先进行,而是在开发过程中不断进行的。你会从构建系统中学习到如何改进设计。这种交互能让程序的设计随着开发工作的进行一直保持在较好的水准上。
本书的内容
本书是一本专门为职业Ruby程序员编写的重构指导。我们的目标是要向你展示怎样以一种受到严格控制同时又高效的方式来进行重构。你会学习到不在代码里引入bug并能按部就班地改进结构的重构方式。
通常一本书都是以介绍来开头的。虽然我对此并无异议,但是我发现要用泛泛而谈或是抽象的定义来介绍重构并不容易。所以我们还是先举个例子吧。第1章会给出一个包含了常见设计错误的小程序,然后将它重构成一个比较能让人接受的面向对象程序。我们会看到重构过程以及好几种重构技术的应用。如果你想要理解重构究竟是什么,那就绝对不能错过这一章。
在第2章里,我们讨论了重构中一些普遍的原则、定义,以及进行重构的理由。我们还会讲到重构里存在的一些问题。在第3章里,Kent Beck会讲解如何在代码里寻找坏味道,以及如何通过重构来清理它们。测试在重构中扮演着非常重要的角色,因此第4章会讨论如何通过一个简单的测试框架将测试织入代码中去。
第5章~第12章覆盖了重构的花名册,这也是本书的精华所在。这并非一份完整的花名册,只能说是花名册的一部分。它包含了我们在重构这个领域里到目前为止的成果。当我们需要进行某项任务,比如说用多态替换条件逻辑的时候,这份花名册可以手把手地提醒我们安全的做法。我们希望你经常回来翻阅这些章节。
Ruby中的重构
在编写《重构》第1版的时候,我选择了Java来展示这项技术,这主要是因为当时Java是一门非常热门的语言。其实绝大多数重构技术并不局限于任何语言,所以很多人读过第1版以后将重构带到了Java以外的世界。
不过使用最顺手的语言来学习重构显然是非常有帮助的。现在有很多人都在学习Ruby语言,而重构又是Ruby文化中的一个核心部分,所以我们觉得有必要为Ruby爱好者提供一种学习重构的方法——特别是对那些没有使用大括号语言背景的人。
此处指Java/C/C++系的语言。——译者注
Jay和Shane承担了这项工作,从头到尾审阅本书的第1版,并把它改成Ruby的风格。他们仔细阅读了原文,去掉所有Java风格的东西,然后用Ruby的方式重新组织上下文。他们都是资深的Ruby程序员,同时又有深厚的Java和C#背景,因此这项工作由他们来做真是再适合不过了。
他们还添加了一些Ruby特有的重构技术。虽然我们在前面说过:绝大多数情况下,重构对任何面向对象语言来说都是一样的,但是仍然会有一些特别的东西是某些语言专有的情况。
谁该阅读本书
我们从那个项目里学到了很多东西,不过真正震撼到我的是Kent那种有条不紊、持续不断改进系统设计的风格。一直以来我对编写干净的代码都抱有极大的热情,坚信花时间去清理有问题的代码,以便让团队能更快捷地开发功能是非常有价值的事情。而Kent向我介绍了一种很多顶尖Smalltalk程序员使用的技术,它能让我的工作效率成倍提升。这是一种他们称之为重构的技术,我很快就变得想要在任何场合下都把它介绍给别人。但是市面上没有任何出版物或是类似的资源可以让我指引人们去自己学习这项技术。既然Kent和其他Smalltalk程序员都没意愿要写一本,所以我就决定自己动手了。
结果我的那本《重构》大受欢迎,在重构成为主流技术的过程中看起来还扮演了相当重要的角色。随着近年来Ruby的兴起,给这本书写一本Ruby版是很有意义的,为此我拉来了Jay和Shane。
什么是重构
重构是改变软件系统的过程,它不会改变代码的外部行为,但是可以改善其内部结构。它清理代码的严谨方式能把引入bug的风险降至最低。基本上当你进行重构的时候,就意味着代码的设计在完成时会得到改善。
很多人觉得“代码的设计在完成时会得到改善”这种说法相当古怪。多年来大多数人都相信设计第一、编码第二的原则。而随着时间的推移,不断修改代码以及系统的完整性后,原本设计的结构也会慢慢变得模糊。代码逐渐从一项工程活动沦落为敲敲打打的修补工作。
重构与此正好相反。有了重构,你可以把一个糟糕甚至混乱的设计,逐渐转变成设计良好的代码。每一个步骤都非常简单,甚至有点过分简单了。比如把一个实例变量从一个类移到另一个类,从一个方法里抽出一些代码单独放到一个方法里去,以及在层次体系之间移动一些代码等。但是这些小改动累积起来却能够彻底改进设计。这和通常认为的软件衰败论的观念是完全相反的。
在重构的时候你会发现工作的重心发生了变化。设计不再是最先进行,而是在开发过程中不断进行的。你会从构建系统中学习到如何改进设计。这种交互能让程序的设计随着开发工作的进行一直保持在较好的水准上。
本书的内容
本书是一本专门为职业Ruby程序员编写的重构指导。我们的目标是要向你展示怎样以一种受到严格控制同时又高效的方式来进行重构。你会学习到不在代码里引入bug并能按部就班地改进结构的重构方式。
通常一本书都是以介绍来开头的。虽然我对此并无异议,但是我发现要用泛泛而谈或是抽象的定义来介绍重构并不容易。所以我们还是先举个例子吧。第1章会给出一个包含了常见设计错误的小程序,然后将它重构成一个比较能让人接受的面向对象程序。我们会看到重构过程以及好几种重构技术的应用。如果你想要理解重构究竟是什么,那就绝对不能错过这一章。
在第2章里,我们讨论了重构中一些普遍的原则、定义,以及进行重构的理由。我们还会讲到重构里存在的一些问题。在第3章里,Kent Beck会讲解如何在代码里寻找坏味道,以及如何通过重构来清理它们。测试在重构中扮演着非常重要的角色,因此第4章会讨论如何通过一个简单的测试框架将测试织入代码中去。
第5章~第12章覆盖了重构的花名册,这也是本书的精华所在。这并非一份完整的花名册,只能说是花名册的一部分。它包含了我们在重构这个领域里到目前为止的成果。当我们需要进行某项任务,比如说用多态替换条件逻辑的时候,这份花名册可以手把手地提醒我们安全的做法。我们希望你经常回来翻阅这些章节。
Ruby中的重构
在编写《重构》第1版的时候,我选择了Java来展示这项技术,这主要是因为当时Java是一门非常热门的语言。其实绝大多数重构技术并不局限于任何语言,所以很多人读过第1版以后将重构带到了Java以外的世界。
不过使用最顺手的语言来学习重构显然是非常有帮助的。现在有很多人都在学习Ruby语言,而重构又是Ruby文化中的一个核心部分,所以我们觉得有必要为Ruby爱好者提供一种学习重构的方法——特别是对那些没有使用大括号语言背景的人。
此处指Java/C/C++系的语言。——译者注
Jay和Shane承担了这项工作,从头到尾审阅本书的第1版,并把它改成Ruby的风格。他们仔细阅读了原文,去掉所有Java风格的东西,然后用Ruby的方式重新组织上下文。他们都是资深的Ruby程序员,同时又有深厚的Java和C#背景,因此这项工作由他们来做真是再适合不过了。
他们还添加了一些Ruby特有的重构技术。虽然我们在前面说过:绝大多数情况下,重构对任何面向对象语言来说都是一样的,但是仍然会有一些特别的东西是某些语言专有的情况。
谁该阅读本书
序言回到顶部↑
我还能清晰地记得自己当初学习面向对象编程的情形。在学习的过程中,我总是有一种莫名的紧张——总觉得少了点什么。有些新概念看起来那么简单、那么熟悉,就好像在告诉你其实它们还有更深的内涵等待你发掘。这实在是种让人挠心的感觉啊。
在阅读设计模式的文献时候我总是饶有兴致,但是遗憾的是读完以后却得不到什么启迪。我去和不同的程序员交谈,浏览各种网站,阅读大量的书籍和伪代码,可是仍然觉得自己忽略了什么重要的东西。虽然我能理解面向对象工具的工作方式,但是却没办法通过一种我觉得是正确的方法去使用它们。
最终,我拿起了本书的第1版。
软件并非灵光一闪就能创造出来的东西。人们总是把注意力放在如何组织开发过程上,而忘记了其实软件开发本身就是一个过程。说得再准确一点,正如《重构》所教诲的,它是一系列细小的决策和行为,而这些决策和行为,正是由渴望创造出色产品的欲望和价值观所驱使的。
只要理解了软件开发是一项持续的活动而非静态的事件,就能帮助我们记住代码也应该是有生命的。好的代码是容易修改的代码。而坏的代码则可以通过不断地改进变得易于修改。在容易修改的代码上工作是非常愉悦的。而在难以改动的代码上工作则令人崩溃。如果不进行重构,你做的修改越多,要面对的压力就会越大。
因此要成为一名软件程序员,光知道什么是好代码还不够,更重要的是要知道怎样让代码变好。软件可不是从石头里蹦出来的,它是我们在键盘上一点一点敲出来的。而重构这本书则教我如何出色地完成这一过程。它教会了我怎样坐下来循序渐进地写出漂亮的代码。
当我第一次读到《重构》的时候,我身在一个小团队里,它的任务是要帮助更大的团队写出更好的软件。在开会和代码复审的时候,我都会随身带着这本书,既当矛又当盾。我非常热爱自己的工作和(更重要的是)软件开发的技艺,我相信和我一起工作的很多程序员在看到我夹着这本书冲向他们的小隔间的时候,一定都非常惧怕我的眼神。其实在这些会议上我并没有经常引用书中的内容,我带着它只是因为它能提醒我们:只要我们记住我们的工作应该是完美的,并且通过各种步骤让它变得完美,那么它就一定可以变得更好。
总结过去的经历,我逐渐意识到我们过去使用的语言和工具其实都是在和我们作对。原本这本书里的技术是为了Smalltalk开发而产生的,而让重构大放异彩的却是在动态环境里,因此我们决定要让它们在Ruby里浴火重生。作为一名Ruby的坚定支持者,看到这样一本能产生深远意义的书采用Ruby来作为主要语言进行描述时,是多么激动人心啊。
本书作为新一代Ruby程序员的指路明灯,不但能教会他们创建更好更灵活的软件,(我希望)更可以让他们和我一样爱上软件开发这门技艺。
Chad Fowler
CoDirector, Ruby Central, Inc
CTO, InfoEther, Inc
在阅读设计模式的文献时候我总是饶有兴致,但是遗憾的是读完以后却得不到什么启迪。我去和不同的程序员交谈,浏览各种网站,阅读大量的书籍和伪代码,可是仍然觉得自己忽略了什么重要的东西。虽然我能理解面向对象工具的工作方式,但是却没办法通过一种我觉得是正确的方法去使用它们。
最终,我拿起了本书的第1版。
软件并非灵光一闪就能创造出来的东西。人们总是把注意力放在如何组织开发过程上,而忘记了其实软件开发本身就是一个过程。说得再准确一点,正如《重构》所教诲的,它是一系列细小的决策和行为,而这些决策和行为,正是由渴望创造出色产品的欲望和价值观所驱使的。
只要理解了软件开发是一项持续的活动而非静态的事件,就能帮助我们记住代码也应该是有生命的。好的代码是容易修改的代码。而坏的代码则可以通过不断地改进变得易于修改。在容易修改的代码上工作是非常愉悦的。而在难以改动的代码上工作则令人崩溃。如果不进行重构,你做的修改越多,要面对的压力就会越大。
因此要成为一名软件程序员,光知道什么是好代码还不够,更重要的是要知道怎样让代码变好。软件可不是从石头里蹦出来的,它是我们在键盘上一点一点敲出来的。而重构这本书则教我如何出色地完成这一过程。它教会了我怎样坐下来循序渐进地写出漂亮的代码。
当我第一次读到《重构》的时候,我身在一个小团队里,它的任务是要帮助更大的团队写出更好的软件。在开会和代码复审的时候,我都会随身带着这本书,既当矛又当盾。我非常热爱自己的工作和(更重要的是)软件开发的技艺,我相信和我一起工作的很多程序员在看到我夹着这本书冲向他们的小隔间的时候,一定都非常惧怕我的眼神。其实在这些会议上我并没有经常引用书中的内容,我带着它只是因为它能提醒我们:只要我们记住我们的工作应该是完美的,并且通过各种步骤让它变得完美,那么它就一定可以变得更好。
总结过去的经历,我逐渐意识到我们过去使用的语言和工具其实都是在和我们作对。原本这本书里的技术是为了Smalltalk开发而产生的,而让重构大放异彩的却是在动态环境里,因此我们决定要让它们在Ruby里浴火重生。作为一名Ruby的坚定支持者,看到这样一本能产生深远意义的书采用Ruby来作为主要语言进行描述时,是多么激动人心啊。
本书作为新一代Ruby程序员的指路明灯,不但能教会他们创建更好更灵活的软件,(我希望)更可以让他们和我一样爱上软件开发这门技艺。
Chad Fowler
CoDirector, Ruby Central, Inc
CTO, InfoEther, Inc
【插图】
评论交流
共有7人开贴评论 7人参与评论 1人参与打分 查看
发表于:2010-7-6 17:35:00
转读者书评:http://book.51cto.com/art/201007/209763.htm
虽说没有银弹,但是重构是近10年来对软件开发领域影响最大的技术之一。它还有一个如影随形的兄弟是自动化的单元测试。单元测试+重构两种技术相互支持,极大地影响了我们设计和编程的方式,有效地提高了软件开发的生产力。
在《超越Java》这本书中,作者预言,Ruby语言最有可能成为Java语言的继任者。Ruby并不是无父无母的天生石猴,它继承了很多其他面向对象编程语言的最佳实践。事实上,单元测试+重构等最佳实践在Ruby社区中得到了最为广泛和深入的贯彻。
我曾经熟读Martin Fowler所著的Java版《重构》,后来也做过大量的Ruby开发,因此对于《重构(Ruby版)》满怀期待。拿到书之后,大致浏览了Ruby版《重构》的章节,感觉到非常亲切,因为它保留了Java版《重构》中绝大部分的内容。实例代码全部从Java改成了Ruby,并根据Ruby语言的特点做了一些修正。这毫不奇怪,因为重构的思想在任何面向对象编程语言中都是通用的。如果有人再写一本其他语言版的重构,那也很正常的。
我认为重构应该作为一名合格的面向对象程序员必须掌握的基本功之一。各种Java IDE开发工具目前都能够支持以全自动化/半自动化方式开展很多种重构,这极大地提高了Java程序员的开发效率。对于Ruby这样一种动态类型编程语言来说,开展自动化重构有很多技术实现上的困难。目前各种Ruby开发工具对于自动化重构的支持仍然非常有限。如果采用手工方式做重构,那么单元测试的重要性就更加突出了。我的看法是,在没有写单元测试之前就不要做重构。Ruby版《重构》可以为Ruby开发工具开展重构提供指导,极大推动Ruby开发工具对于自动化重构的支持。
阅读Java版《重构》是一次非常愉快的体验,相信阅读Ruby版《重构》也能带来同样愉快的体验。我向国内所有的Ruby程序员郑重推荐这本 Ruby版《重构》。
虽说没有银弹,但是重构是近10年来对软件开发领域影响最大的技术之一。它还有一个如影随形的兄弟是自动化的单元测试。单元测试+重构两种技术相互支持,极大地影响了我们设计和编程的方式,有效地提高了软件开发的生产力。
在《超越Java》这本书中,作者预言,Ruby语言最有可能成为Java语言的继任者。Ruby并不是无父无母的天生石猴,它继承了很多其他面向对象编程语言的最佳实践。事实上,单元测试+重构等最佳实践在Ruby社区中得到了最为广泛和深入的贯彻。
我曾经熟读Martin Fowler所著的Java版《重构》,后来也做过大量的Ruby开发,因此对于《重构(Ruby版)》满怀期待。拿到书之后,大致浏览了Ruby版《重构》的章节,感觉到非常亲切,因为它保留了Java版《重构》中绝大部分的内容。实例代码全部从Java改成了Ruby,并根据Ruby语言的特点做了一些修正。这毫不奇怪,因为重构的思想在任何面向对象编程语言中都是通用的。如果有人再写一本其他语言版的重构,那也很正常的。
我认为重构应该作为一名合格的面向对象程序员必须掌握的基本功之一。各种Java IDE开发工具目前都能够支持以全自动化/半自动化方式开展很多种重构,这极大地提高了Java程序员的开发效率。对于Ruby这样一种动态类型编程语言来说,开展自动化重构有很多技术实现上的困难。目前各种Ruby开发工具对于自动化重构的支持仍然非常有限。如果采用手工方式做重构,那么单元测试的重要性就更加突出了。我的看法是,在没有写单元测试之前就不要做重构。Ruby版《重构》可以为Ruby开发工具开展重构提供指导,极大推动Ruby开发工具对于自动化重构的支持。
阅读Java版《重构》是一次非常愉快的体验,相信阅读Ruby版《重构》也能带来同样愉快的体验。我向国内所有的Ruby程序员郑重推荐这本 Ruby版《重构》。
| 我要写评论 |
| 查看所有评论交流(共7条) |







点击看大图





加载中...

