首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Eclipse复建之总章

2013-04-12 
Eclipse重构之总章《重构——改善既有代码》一书,总览下来,除去一些几乎每个工程师已知已会 和 比较偏的手法外

Eclipse重构之总章

《重构——改善既有代码》一书,总览下来,除去一些几乎每个工程师已知已会 和 比较偏的手法外,主要就是以下这些:

一、基本手法

1.       Encapsulate Field

2.       Self Encapsulate Field

3.       Extract Method

4.       Move Field/Method

5.       Rename Field/Method

6.       Replace Temp with Query

7.       Separate Query from Modifier

8.      Introduce Factory

变更接口时应该注意该接口是否被重写,是否已发布。


二、针对类型码的重构

1.       Replace Type Code with Class

2.       Replace Type Code with Subclasses

3.       Replace Type Code with State/Strategy

4.       Replace Conditionalwith Polymorphism

1.  如果类型码不影响宿主类的行为,则优先考虑使用Replace Type Code with Class

2.  如果类型码影响宿主类的行为,且类型码在对象创建后不会发生变化而且 宿主类也没有子类,则优先考虑使用Replace Type Code with Subclasses

3.  如果类型码影响宿主类的行为,且类型码在对象创建后会发生变化,则考虑使用Replace Type Code with State/Strategy

4.  如果要以多态去除类型码,则可以在应用Replace Conditional with Polymorphism


三、类关系的重构

1.       Form Template Method

2.       Extract Class

3.       Extract Subclass, PushDown Field/Method

4.       Extract Superclass, PullUp Field/Method

5.       Extract Interface

1.  两个类中某个函数有大致相近的操作(一般是相同的逻辑),则可以应用Template Method减少重复。

2.  如果一个类承担了过多指责,呈现类过大和发散性修改的坏味道,这时可以应用Extract Class提炼一部分职责到单独的类中,并将行为委托给这些类。

3.  一个类的某些行为只被一部分实例用到,其他实例不需要他们,则可以应用Extract Subclass将这些行为移动到子类中。

4.  两个类有共同的行为或者成员,出现代码重复的坏味道,则可以应用Extract Superclass 将这些共同代码提炼到父类。

5. 如果只是提炼接口,不提炼共同代码(方法实现、成员),则可以应用Extract Interface。

 

 

四、组合与继承

1.       Replace Inheritancewith Delegation

2.       ReplaceDelegation with Inheritance

1.  子类不需要超类中的所有行为,为了尽可能职责单一和简单,应该以委托取代继承。(受托类为父类)

2.  委托类中存在大量的简单委托函数(函数的实现只是简单调用受托类方法),这种情况下意味着子类基本使用了父类的所有方法,可以将委托变更为继承。


正如《重构》一书以及其他书中所反复提及的,重构代替不了设计,因为两者不在一个层次。这里就引用一本书上的一段话:

如果说“设计”是属于宏观层次,那么“模式”就是微观结构, 而“重构”,特指上面的这些基本重构手法,就是属于纳米层级。

客观而言,《重构》一书最大的价值在于告诉你 如何修改代码、哪些设计是容易通过重构转换的。至于重构的方向,也就是目标, 她根本没有告诉你。虽然书中提到了各种代码的坏味道,但是实际操作过程中就会发现,现实的代码坏味道是无穷无尽的,或者说是相互竞争的,过分执着于各种小的代码坏味道,往往是陷入泥潭,而无法自拔。因此,设计的思想必不可少,只有她能给你宏观概念,给出重构的方向。 而各种重构手法只是实现这一目标的手段而已。


因此,重构虽然只是改代码的一种手段,但是我们不应该忽视。谁都有改代码的经历,都会有不改则已,一改全是bug的经历,而《重构》一书正是要帮你解决这个问题。






热点排行