重构是什么?
在代码写好之后改进它的设计。
重构分类:物理结构、类层次结构、类内部结构。
名称 | 快捷键 | 直译 | 作用范围 | 描述 |
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高级编程》