重构与模式(修订版)(txt+pdf+epub+mobi电子书下载)|百度网盘下载

作者:[美]JoshuaKerievsky着

出版社:人民邮电出版社

格式: AZW3,DOCX,EPUB,MOBI,PDF,TXT

重构与模式(修订版)

试读重构与模式(修订版):

前言

本书主旨

本书讲述的是重构(改善既有代码设计的过程)与模式(针对反复出现的问题的经典解决方案)的结合。本书建议,使用模式来改善既有的设计,要优于在新的设计早期使用模式。这对于已经存在几年和几分钟的代码都同样适用。我们通过一系列低层次的设计转换,也就是重构,来应用模式,改进设计。

本书目的

写这本书是为了帮助读者:

了解如何结合重构和模式;

以模式向的重构(pattern-directed refactoring)改进现有代码的设计;

找出需要模式导向重构的代码段;

了解为什么使用模式来改新设计的早期使用模式要好。

为实现这些目的,本书包含以下特点:

目录包含27种重构方法;

示例基于实战代码,没有纯示意玩具代码;

模式的描述,包括实际的模式示例;

一组坏味[1](即问题)表示需要重构模式导向;

实现不同模式的示例;

何时应通过重构实现模式、趋势模式和去除模式提出建议。

本书提出了学习顺序的建议,以帮助个人和小组学习书籍中的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

阅读剩余
THE END