首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训

重构与模式

  • 书名:重构与模式
  • 作者:[美]Joshua Kerievsky著 杨光 刘基诚译
  • 来源:人民邮电出版社
  • 出版时间:2006年10月
  • ISBN:7115153361
  • 定价:45元

看 书 评 论 收 藏打 分 购 买

图书版权归出版社和作者所有,CSDN & DearBook独家提供试读和连载
内容介绍:
本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。书中讲述了27种重构方式。\r\n 本书适于面向对象软件开发人员阅读,也可作为高校计算机专业、软件工程专业师生的参考读物。

最近评论

精 彩 导 读

本书主旨 本书讲述的是重构(改善既有代码设计的过程)与模式(针对反复出现的问题的经典解决方案)的结合。本书建议,使用模式来改善既有的设计,要优于在新的设计早期使用模式。这对于已经存在几年和几分钟的代码都同样适用。我们通过一系列低层次的设计转换,也就是重构,来应用模式,改进设计。 本书目的 撰写本书是为了帮助读者:  理解如何结合重构和模式;  用模式导向的重构(pattern-directed refactoring)改善既有代码的设计;  找出需要进行模式导向重构的代码段;  了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。 为了实现这些目的,本书包含以下特色:  一个含有27种重构方式的目录;  示例以实战代码为基础,没有纯示意性的玩具代码;  模式的描述,包括实际的模式示例;  一组坏味 (也就是问题),表示需要进行模式导向的重构;  实现同一模式的不同方式的示例;  就什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。 为了帮助个人和小组学习本书中的27种重构,本书给出了学习顺序的建议。 读者对象 本书的读者是从事或者有兴趣改善既有代码设计的面向对象程序员。他们中很多人都在使用模式和重构,但是从来没有通过重构来实现模式。还有一些程序员对重构和模式知之甚少,但愿意了解更多相关内容。 本书对新项目开发(从头编写新的系统或者特性)和遗留开发(主要是维护遗留系统)都适用。 所需背景 本书要求读者熟悉紧耦合、松耦合等设计方面的概念,以及继承、多态、封装、组合、接口、抽象类和具体类、抽象方法和静态方法等面向对象方面的概念。 书中示例使用Java代码。我发现对于大多数面向对象程序员来说,Java代码都很容易读懂。我有意识地不使用那些Java独有的特性,因此无论你习惯于用C++、C#、Visual Basic .NET、Python、Ruby、Smalltalk,还是其他面向对象语言编程,都应该能够理解本书中的代码。 本书与Martin Fowler的经典著作《重构》[F]息息相关。该书中包含了对许多低层次的重构,例如:  提炼方法(Extract Method)  提炼接口(Extract Interface)  提炼超类(Extract Superclass)  提炼子类(Extract Subclass)  上移方法(Pull Up Method)  搬移方法(Move Method)  重命名方法(Rename Method) 《重构》一书中还有一些更复杂的重构,例如:  用委托替换继承(Replace Inheritance with Delegation)  用多态替换条件语句(Replace Conditional with Polymorphism)  用子类替换类型代码(Replace Type Code with Subclasses) 为理解本书中介绍的模式导向的重构,读者无需了解上面列出的所有重构,相反可以跟随阐释这些重构的示例代码进行学习。但是,如果要获取阅读本书的最佳效果,我推荐你同时有一本《重构》在手。该书是无价的重构资源,而且对理解本书很有帮助。 我要讨论的模式来自经典图书《设计模式》[DP],还有其他作者的作品,包括Kent Beck、Bobby Woolf和我本人的作品。我和同事们在实际项目中都实践了重构实现、重构趋向和重构去除这些模式。通过学习模式导向重构的艺术,你将理解如何重构实现、重构趋向和重构去除本书中没有提到的模式。 阅读本书不必事先成为这些模式的专家,但是对模式有所了解当然会有帮助。为了帮助读者理解所讨论的模式,本书包含了一些简洁的模式总结、模式的UML略图和许多示例实现代码。要更详细地理解模式,我推荐你在学习本书的同时,也结合研读所引用的模式文献。 本书使用UML 2.0表示法。如果对UML不太熟悉的话,不要担心。我也只是知其大略而已。编写本书时,Fowler的《UML 精粹》[Fowler, UD] 一书常伴我左右,不时查阅。 如何使用本书 要概略地了解本书中的重构,可以从学习每个重构的总结(参见5.1节),以及每个重构中“动机”一节的“优点和缺点”开始。 要更深入地理解重构,应该研究每个重构的各个部分,但“做法”一节除外。“做法”一节比较特殊。它的目的是通过建议应该遵循哪些低层次重构,帮助读者实现该重构。理解本书中的重构,并不需要阅读这一节。这一节更可能用作在实际重构时的参考。 本书和《重构》[F] 所讨论的代码坏味(code smell),是识别设计问题和找到有助于解决问题的相关重构的一种有益方式。也可以查看本书和《重构》中的重构列表(按字母顺序排列),找到能够改进设计的重构。 本书记载的是使设计实现、趋向和去除模式的重构。为了帮助你找到着手的方向,3.4节专门讲述这一主题。本书还有一个表列出了所有模式的名称和可以用于使设计实现、趋向和去除模式的重构。 本书历史 我从1999年开始动笔撰写本书。当时,有好几个因素都促使我为模式、重构和极限编程(extreme programming,XP)[Beck, XP]写点什么。首先,我非常吃惊地发现,XP文献中还没有提及模式。我因此撰写了一篇名为Patterns & XP(模式与XP)的论文[Kerievsky, PXP],在该文中我公开地讨论了这一问题,并就如何将软件开发界的这两大主题结合起来提出了一些建议。 其次,我知道Martin Fowler在《重构》 [F] 一书中只写到了几个“通过重构实现模式”,而且他明确表示,希望有人在此方面进一步写作。这看上去是一个很值得努力的目标。 最后,在我和同事教授的设计模式研讨班上,我注意到有些学员需要更多指导,才能决定何时应该在设计中实际地应用模式。知道模式是什么是一回事,而真正理解什么时候去如何应用模式,就完全是另一回事了。我认为这些学员需要学习一些实际的案例,在这些案例中,在设计时应用模式能看到实实在在的效果,因此我开始将这种案例汇编成一个提纲。 当我开始撰写本书时,我遵循了Bruce Eckel 的优秀写作传统,将草稿在网上公开,听取人们的意见。网络真是一个好东西。许多人向我发来反馈,有建议,有鼓励,也有感谢。 随着书稿和想法的不断成熟,我开始在许多会议、讲座和Industrial Logic公司的“模式与重构”强化研讨班上讲授“通过重构实现模式”的主题。这使我获得了更多的改进建议,而且更多地了解到程序员理解这一主题需要些什么。 渐渐地,我认识到重构是审视模式的最佳方式,而且模式正是一系列低层次重构所能达到的最佳目标。 很幸运,书成稿之后,得到了许多经验丰富的专业人士的审阅,他们提出了很多改进建议。我在致谢中提供有关他们的更多情况。 站在巨人肩上 1995年的夏天,我走进书店,第一次见到了《设计模式》[DP]一书,并从此与模式结下不解之缘。我希望感谢四位作者Erich Gamma、Richard Helm(我还未曾谋面)、Ralph Johnson和John Vlissides编写了如此优秀的技术图书。他们在书中所表现出的睿智,使我大大提高了自己的软件设计水平。 大约在1996年,我在一次模式会议上遇到了 Martin Fowler,那时他还没有出名。这就是我们长期友谊的开始。如果Fowler(以及他的合作者Kent Beck、William Opdyke、John Brant和Don Roberts)没有写经典著作《重构》 [F]的话,我真地怀疑自己是否还能写出这本书。与《设计模式》一样,《重构》完全改变了我从事软件设计的方式。 我能够完成本书,全拜《设计模式》和《重构》的作者们的辛勤劳动所赐。对此我感激不尽。 致谢 我是如此幸运,有一位妻子在我写作本书期间全心全意地支持我。Tracy,你是最棒的。我愿与你白头偕老。 我们的两个女儿Sasha和Sophia,都是在我写作本书期间出生的。我要感谢她们在爸爸写作时候表现出的耐心。 在20世纪70年代,我的父亲Bruce Kerievsky将我和哥哥带到工作场所,让我们画那些位于空调房间中的巨大计算机。他还给我们看长长的绿色和白色的计算机清单,上面用巨大的字母写着我们的名字。这些都激励我进入了这个伟大的行业——谢谢你,父亲。 感谢家人之后,应该是技术方面的致谢了。 John Brant 对本书居功至伟。他和他的同事 Don Roberts 都位居世界上最渊博的重构专家之列。John审阅了本书手稿的四个版本,提出了很多想法,并鼓励我删去许多比较平淡的内容。他的真知灼见遍及目录中几乎所有重构“做法”部分的字里行间。Don虽然忙于其他的项目,未能投入更多精力,但是他复查了John的反馈意见,非常感谢。我还要感谢两位为本书题跋。 Martin Fowler 在审阅和建议上用力甚勤,包括简化略图和澄清某些技术讨论。他帮助我改正了一些有问题的 UML 图,而且进行了更新以反映 UML 2.0的变化。我很荣幸Martin选中本书作为他主编的签名系列之一,感谢他为本书作序。 Sven Gorts 下载了本书手稿的多个版本
line

网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告

北京百联美达美数码科技有限公司  版权所有  京 ICP 证 020026 号

Copyright © 2000-2006, CSDN.NET, All Rights Reserved