重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明

1 抽-面向过程

1.1 代码段->抽为方法

Refactor | Extract|Method重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第1张图片 重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第2张图片重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第3张图片

2 替-inline

2.1 重复代码段->属性或变量(inline逆操作)

Refactor | Introduce Field -> 提取为类属性
Refactor | Extract|variabel -> 提取方法中的变量
将重复的代码段提取,用某个变量或者属性字段来表示。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第4张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第5张图片

2.2 Inline变量

Refactor | inline
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第6张图片

2.3 Inline超类

Refactor | inline
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第7张图片

2.4 inline内部类->匿名类

Refactor | inline
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第8张图片重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第9张图片

2.5 inline方法

Refactor | inline
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第10张图片重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第11张图片

2.6 inline构造器

Refactor | inline
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第12张图片

3 组-面向类

组则是对数据组合和跟数据相关的过程的组合。组的核心就是面向对象的封装,包含下面三块:

  1. 数据依赖的切割
  2. 方法跟数据的相关性
  3. 方法之间的相关性
    切割数据的时候就是第一个,当你切割完数据后,看着那些方法该搬到新类的时候就是第二个。然后如果你想看看这些方法是不是放在里面很合适(属于一个上下文)或者如果你只是抽取个纯方法的类,就是第三个。

3.1 类属性直接操作->setter/getter封装

• 重构|封装字段(Refactor | Encapsulate Fields)
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第13张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第14张图片

3.2 方法入参->类

Refactor|Parameter Object
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第15张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第16张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第17张图片

3.3 方法返回值->返回类

Refactor| wrap method return value
若要包装返回值,请按照下列步骤操作:

  1. 在编辑器中打开所需的类,并将插入符号放在要包装其返回值的方法中。、
    在这里插入图片描述

  2. 在主菜单或选择的上下文菜单上选择:重构|换行返回值。或者,在 Structure 视图中选择所需的方法,然后从那里触发重构。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第18张图片

  3. 在 “换行返回值” 对话框中,指定新包装类的名称和包,或者选择一个现有的兼容包装类。优先推荐使用内部类去包裹。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第19张图片

  4. 预览并应用更改。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第20张图片

3.4 匿名类->内部类

Refactor| Convert Anonymous to Inner
在 IntelliJ IDEA 中"将匿名转换为内部" 重构允许您将匿名类转换为命名的内部类。
如果要内联构造函数,请按照下列步骤操作:

  1. 将光标放在要重构的匿名类中。
  2. 在主菜单或选择的上下文菜单上,选择:Refactor| Convert Anonymous to Inner。将打开 “将匿名转换为内部” 对话框。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第21张图片
  3. 在 “类名称” 字段中,指定新内部类的名称。Convert Anonymous to Inner
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第22张图片
  4. 在 “构造函数参数” 区域中,选择变量,这些变量将被用作内部类构造函数的参数。
  5. 单击 “确定” 以创建内部类。

3.5 属性和方法->delegate类

Refactor|Extract| Delegate
当类变得太大并且 “做太多事情” 时,将类的一些字段和方法提取到一个单独的新创建的类中。

  1. 在编辑器中打开该类,或者在 “项目” 工具窗口中选择它。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第23张图片
  2. 从主菜单或上下文菜单中选择:Refactor|Extract| Delegate
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第24张图片
  3. 在打开的 “提取” 对话框中:
    指定要创建的类的名称和包。
    选择要包含在新类中的字段和方法。
    单击 “预览” 可在 “查找工具” 窗口中查看所选域或方法的用法。选择要包括在重构中的
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第25张图片
    使用实例,然后单击 “执行重构”。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第26张图片

3.6 删除冗余的委托类方法

Refactor | Remove Middleman
替换在类中委托方法的所有调用,并直接对委托到的字段进行等效调用。此外,还可以自动删除类委托方法。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第27张图片

3.7 属性和方法->超类

Refactor | Extract | Superclass
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第28张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第29张图片

3.8 方法->提取为接口

Refactor|Extract| Interface

  1. 在 “项目” 视图、“结构” 视图中选择类,或在编辑器中的类中的任意位置放置插入符号。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第30张图片
  2. 在主菜单或选择的上下文菜单上,选择:重构| 提取| 接口。此时将显示 “提取接口” 对话框。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第31张图片
  3. 要提取新的接口,请选择 “提取接口” 选项并指定新接口的名称。要重命名原始类并使其成为新创建的接口的实现,请选择 “重命名原始类” 并使用 “可能的接口” 选项,并指定原始类的新名称。IntelliJ IDEA 会将所有原始类的用法改为只在仍然需要的地方执行的用法。
  4. 指定新的接口所在的包。
  5. 在 “成员” 中选择要在接口中列出的类成员以形成接口区域。该列表显示了该类的所有方法,以及最终的静态字段(常量)。
  6. 在 JavaDoc 区域,选择要应用于 JavaDoc 的操作。若要将其保留在其所在的位置,请选择 “As” 选项。要将其复制到提取的接口,请选择 “复制” 选项。要将其移动到提取的接口,请选择 “移动” 选项。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第32张图片
  7. 单击 “重构” 以继续。
  8. 在准备就绪时单击 “重构”。如果 IntelliJ IDEA 在 “查找工具” 窗口中显示重构预览,请查看建议的更改。要提取接口并应用建议的更改,请单击 “执行重构”。

3.9 方法->类

Refactor|Methed Object
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第33张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第34张图片

3.10 方法->函数式编程或匿名类

Refactor | Extract | Functional Parameter
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第35张图片

3.11 提取方法中的常量

Refactor | Extract | Constant
可以提取到: -本类中作为类成员 -枚举类中作为成员
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第36张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第37张图片

4 改-重命名

4.1 重命名

Refactor|rename (Shift+F6)
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第38张图片

4.2 更改类签名

Refactor|Change Signature (ctrl+F6)
要更改类签名,请按照下列步骤操作:

  1. 在编辑器中,将光标放在要更改其签名的类的名称中。
  2. 执行以下操作之一:按 Ctrl+F6。
    在主菜单中选择:重构| 更改签名。
    从上下文菜单中选择:重构| 更改签名。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第39张图片
    3.在 “更改类签名” 对话框中,使用可用的控件来管理形式类型参数:
    要添加新参数,请单击或按 Alt+Insert。分别在名称和默认值字段中指定参数名称和默认类型。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第40张图片
    要删除参数,请选择参数并单击(Alt+Delete)。
    要在列表中向上或向下移动参数的位置顺序,请选择该参数,然后使用 (Alt+Up)或(Alt+Down)。重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第41张图片
  3. 要立即执行重构,请单击“重构”。
    若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 “预览”。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第42张图片

4.3 更改方法签名

Refactor|Change Signature (ctrl+F6)
在 Java 中,可以使用更改方法签名重构为:

  • 更改方法名称、返回类型和可见性范围。
  • 添加新的参数并删除现有的参数。请注意,您还可以使用专用的提取参数重构来添加参数。
  • 重新排列参数。
  • 更改参数名称和类型。
  • 添加和删除异常。
  • 通过方法调用层次结构传播新的参数和异常。

在编辑器中,将光标放在要更改其签名的方法的名称中。
执行以下操作之一:按 Ctrl+F6。
在主菜单中选择:重构| 更改签名。
从上下文菜单中选择:重构|更改签名。
请注意,如果重构覆盖其他方法的方法,IntelliJ IDEA 建议从基类修改方法,或仅修改选定的方法。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第43张图片
使用 “参数” 选项卡上的控件管理方法参数:
要添加新参数,请单击(Alt+Insert)并在相应字段中指定新参数的属性。如有必要,请选择 Use Any Var 选项。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第44张图片
指定如何处理方法调用。为此,请选择以下方法调用选项之一:
如果你想要修改方法调用,请选择 “修改”。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第45张图片
如果要使现有方法调用保持不变,请通过重载方法选择 “委托”。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第46张图片
要立即执行重构,请单击 “重构”。
若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 “预览”。

5 移-移动类或方法

5.1 Package的移动

Refactor | Move
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第47张图片

  1. 要将整个包移到另一个包中,请选择第一个选项,单击 “确定”,然后在 “移动” 对话框中指定移动选项。
  2. 要将目录移动到另一个源根目录,请选择第二个选项,单击“确定”,然后指定目标源根目录。
  3. 要将目录移动到其他目录,请选择第三个选项,单击“确定”,然后指定目标目录。

5.2 类的移动

5.2.1 类->静态类(切割数据依赖)

切割类与外部的实例依赖,如果类引用任何外部类字段,则 “使类静态” 对话框建议将外部类作为参数传递给内部类构造函数。
Refactor | Make Static

5.2.2 移动类到其他的package

Refactor | Move
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第48张图片

5.2.3 移动类作为其他类的内部类

Refactor | Move
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第49张图片

5.3 父子类之间的方法移动

5.3.1 子类pull到父类

重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第50张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第51张图片

5.3.2 父类push到子类

重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第52张图片
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第53张图片

5.4 无关类之间的方法的移动

5.4.1 实例方法->静态方法

Refactor | Make Static
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第54张图片重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第55张图片

5.4.2 静态方法->实例方法

Refactor | Convert to Instance Method
在编辑器中,将插入符号放在要重构的方法的声明或用法上。该方法应该是静态的,其参数的类型应该是项目中的类。换句话说,你不能使用这样如String类型的参数。
执行以下操作之一:
注意:所选的方法必须是静态的,并且必须至少接收当前项目中包含的某一个类作为参数。
在 “重构” 菜单上,选择 “转换为实例方法(Convert to Instance Method)”。
右键单击该方法并选择:重构| 转换为实例方法(Refactor | Convert to Instance Method)。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第56张图片
将显示 “转换为实例方法” 对话框。
在 “选择实例参数” 列表中,在转换后选择您希望该方法属于的类。此类在方法内的所有用法都被替换。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第57张图片
若要更改已转换方法的可见性范围,请在 “可见性” 区域中选择新范围。默认情况下,转换后的方法将没有范围声明(等同于 public)。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第58张图片
预览并应用更改。

6 OOP重构

6.1 不使用范型->范型

Refactor| Generify

  1. 在 Project 或 Structure 视图中选择代码转换级别(可以是方法、类、包或目录),也可以将光标放在编辑器中的类或方法名称上。如果您想将泛型应用于单个代码片段,只需在编辑器中选择它。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第59张图片
  2. 在主菜单或选择的上下文菜单上,选择:重构| Generify。将出现 Generify 对话框。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第60张图片
  3. 定义重构选项。有关详细信息,请参阅对话框说明。
    重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第61张图片
  4. 预览并应用更改。

6.2 构造器重构

6.2.1 构造器->工厂方法

Refactor|Replace Constructor with Factory Method
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第62张图片

6.2.2 构造器->Builder

Refactor|Replace Constructor with Builder

6.3 继承->delegate

Refactor | Replace Inheritance With Delegation
创建了一个私有的内部类,它继承了以前的超类或接口。通过新的内部类调用父节点的选定方法。
重构--Java重构5式-抽替组改移-Idea重构快捷键操作说明_第63张图片

你可能感兴趣的:(重构,intellij-idea,重构,java)