重构是什么?


在代码写好之后改进它的设计。




Eclipse 重构功能的使用与重构快捷键_工作技巧




重构分类:物理结构、类层次结构、类内部结构。







名称


快捷键


直译

作用范围


描述


Rename

Alt + Shift + R

 

 

可以对任意变量、类、方法、包名、文件夹进行重新命名,并且所有使用到的地方会统一进行修改。

Move

Alt + Shift + V

 

字段

把字段移到其他类、把类移到其他包







名称


快捷键


直译

作用范围


描述


Change Method Signature

Alt + Shift + C

修改方法签名

方法

对方法进行操作,可以修改方法名、访问权限、增加删除方法参数、修改参数顺序、添加方法异常

Extract Method

Alt + Shift + M

提取为方法

方法

任意选中一块代码,自动转换为方法,自动添加参数返回类型。

Extract Local Variable

Alt + Shift + L

提取局部变量

字符/数字

通常用于表达式,把其中一个抽取为本地的变量,例如3 + 5 抽取为 int i = 3;

Extract Constant

Ctrl+1  Extract to Constant

提取常量

字符/数字

把任意位置的字符串或者数字抽取为一个静态全局常量。所有使用此字符或者数字的也会相应的被替换为使用常量。

Inline

Alt + Shift + I

内联

方法

把调用此方法的地方直接替换成此方法的内容。选中任意方法才可使用此功能。(有All invocations 与 Only the selected invocation两个选项)






名称


快捷键


直译

作用范围


描述


Convert Local Variable to Field

Alt + Shift + K

局部变量转变为全局变量

局部变量

把局部变量转变为全部变量,可以重新修改变量名。

Convert Anonymous Class to Nested

 

匿名类转换为嵌套内部类

匿名类

可以设置类型,内部包含字段类型等。

Move Type to New File

 

移动类到新的文件

嵌套类

以嵌套类创建一个新的类文件





名称


快捷键


直译

作用范围


描述


Extract Supperclass

 

提取父类

 

提取选中字段或方法放置到其父类中(注意提取方法时,先提取其中使用的字段)

Extract Interface

 

提取接口

从一个类的方法生成一个接口(仅当前类的方法会变为接口,其他使用此方法的地方不会)

Use Supertype Where Possible

 

尽可能使用父类型

把选中引用向上转型,变成其父类的引用

Push Down

 

下推

变量、方法

把选中方法从父类移到子类中,父类中响应方法变为抽象方法

Pull Up

 

上移

变量、方法

与Push Down相反,把子类的方法上移到父类中




名称


快捷键


直译

作用范围


描述


Extract Class

 

提取为类

字段

把所有选中字段提到新类中,可以选择新建文件也可以使内部类

Introduce Parameter Object

 

引入参数对象

方法

把方法参数抽取为一个类(避免参数在方法内引用被修改异常)


名称


快捷键


直译

作用范围


描述


Introduce Indirection

 

 

 

让其他类可调用当前类某方法

Introduce Factory

 

引用工厂

构造函数

用方法返回一个对象

Introduce Parameter

 

引入参数

 

将字段抽取为方法中的参数

Encapsulate Filed

 

封装字段

 

为字段提供setter/getter方法




Introduce Factory


Selected entity is not a constructor invocation or definition.


名称


快捷键


直译

作用范围


描述


Generalize Declared Type

 

 

 

把非原始对象字段(或方法参数)替换为其父类型。

Infer Generic Type Arguments

 

 

 

为原始形式的那些类型推测恰当的泛型类型


Generalize Declared Type 可能出现的异常


Generalize Declared Type is not supported on primitive types. 不支持原始类型






名称


快捷键


直译

作用范围


描述


Migrate JAR File

 

 

 

 

Create Script

 

 

 

 

Apply Script

 

 

 

 

History

 

 

 

 










参考资料


《Eclipse 3高级编程》




​探索 Eclipse JDT 中的重构功能​




​在 Eclipse 中创建新的重构功能​