Refactor | Extract|Method
2 替-inline 2.1 重复代码段->属性或变量(inline逆操作)Refactor | Introduce Field -> 提取为类属性
Refactor | Extract|variabel -> 提取方法中的变量
将重复的代码段提取,用某个变量或者属性字段来表示。
Refactor | inline
Refactor | inline
Refactor | inline
Refactor | inline
Refactor | inline
组则是对数据组合和跟数据相关的过程的组合。组的核心就是面向对象的封装,包含下面三块:
- 数据依赖的切割
- 方法跟数据的相关性
- 方法之间的相关性
切割数据的时候就是第一个,当你切割完数据后,看着那些方法该搬到新类的时候就是第二个。然后如果你想看看这些方法是不是放在里面很合适(属于一个上下文)或者如果你只是抽取个纯方法的类,就是第三个。
• 重构|封装字段(Refactor | Encapsulate Fields)
Refactor|Parameter Object
Refactor| wrap method return value
若要包装返回值,请按照下列步骤操作:
-
在编辑器中打开所需的类,并将插入符号放在要包装其返回值的方法中。、
-
在主菜单或选择的上下文菜单上选择:重构|换行返回值。或者,在 Structure 视图中选择所需的方法,然后从那里触发重构。
-
在 “换行返回值” 对话框中,指定新包装类的名称和包,或者选择一个现有的兼容包装类。优先推荐使用内部类去包裹。
-
预览并应用更改。
Refactor| Convert Anonymous to Inner
在 IntelliJ IDEA 中"将匿名转换为内部" 重构允许您将匿名类转换为命名的内部类。
如果要内联构造函数,请按照下列步骤操作:
- 将光标放在要重构的匿名类中。
- 在主菜单或选择的上下文菜单上,选择:Refactor| Convert Anonymous to Inner。将打开 “将匿名转换为内部” 对话框。
- 在 “类名称” 字段中,指定新内部类的名称。Convert Anonymous to Inner
- 在 “构造函数参数” 区域中,选择变量,这些变量将被用作内部类构造函数的参数。
- 单击 “确定” 以创建内部类。
Refactor|Extract| Delegate
当类变得太大并且 “做太多事情” 时,将类的一些字段和方法提取到一个单独的新创建的类中。
- 在编辑器中打开该类,或者在 “项目” 工具窗口中选择它。
- 从主菜单或上下文菜单中选择:Refactor|Extract| Delegate
- 在打开的 “提取” 对话框中:
指定要创建的类的名称和包。
选择要包含在新类中的字段和方法。
单击 “预览” 可在 “查找工具” 窗口中查看所选域或方法的用法。选择要包括在重构中的
使用实例,然后单击 “执行重构”。
Refactor | Remove Middleman
替换在类中委托方法的所有调用,并直接对委托到的字段进行等效调用。此外,还可以自动删除类委托方法。
Refactor | Extract | Superclass
Refactor|Extract| Interface
- 在 “项目” 视图、“结构” 视图中选择类,或在编辑器中的类中的任意位置放置插入符号。
- 在主菜单或选择的上下文菜单上,选择:重构| 提取| 接口。此时将显示 “提取接口” 对话框。
- 要提取新的接口,请选择 “提取接口” 选项并指定新接口的名称。要重命名原始类并使其成为新创建的接口的实现,请选择 “重命名原始类” 并使用 “可能的接口” 选项,并指定原始类的新名称。IntelliJ IDEA 会将所有原始类的用法改为只在仍然需要的地方执行的用法。
- 指定新的接口所在的包。
- 在 “成员” 中选择要在接口中列出的类成员以形成接口区域。该列表显示了该类的所有方法,以及最终的静态字段(常量)。
- 在 JavaDoc 区域,选择要应用于 JavaDoc 的操作。若要将其保留在其所在的位置,请选择 “As” 选项。要将其复制到提取的接口,请选择 “复制” 选项。要将其移动到提取的接口,请选择 “移动” 选项。
- 单击 “重构” 以继续。
- 在准备就绪时单击 “重构”。如果 IntelliJ IDEA 在 “查找工具” 窗口中显示重构预览,请查看建议的更改。要提取接口并应用建议的更改,请单击 “执行重构”。
Refactor|Methed Object
Refactor | Extract | Functional Parameter
Refactor | Extract | Constant
可以提取到: -本类中作为类成员 -枚举类中作为成员
Refactor|rename (Shift+F6)
Refactor|Change Signature (ctrl+F6)
要更改类签名,请按照下列步骤操作:
- 在编辑器中,将光标放在要更改其签名的类的名称中。
- 执行以下操作之一:按 Ctrl+F6。
在主菜单中选择:重构| 更改签名。
从上下文菜单中选择:重构| 更改签名。
3.在 “更改类签名” 对话框中,使用可用的控件来管理形式类型参数:
要添加新参数,请单击或按 Alt+Insert。分别在名称和默认值字段中指定参数名称和默认类型。
要删除参数,请选择参数并单击(Alt+Delete)。
要在列表中向上或向下移动参数的位置顺序,请选择该参数,然后使用 (Alt+Up)或(Alt+Down)。 - 要立即执行重构,请单击“重构”。
若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 “预览”。
Refactor|Change Signature (ctrl+F6)
在 Java 中,可以使用更改方法签名重构为:
- 更改方法名称、返回类型和可见性范围。
- 添加新的参数并删除现有的参数。请注意,您还可以使用专用的提取参数重构来添加参数。
- 重新排列参数。
- 更改参数名称和类型。
- 添加和删除异常。
- 通过方法调用层次结构传播新的参数和异常。
在编辑器中,将光标放在要更改其签名的方法的名称中。
执行以下操作之一:按 Ctrl+F6。
在主菜单中选择:重构| 更改签名。
从上下文菜单中选择:重构|更改签名。
请注意,如果重构覆盖其他方法的方法,IntelliJ IDEA 建议从基类修改方法,或仅修改选定的方法。
使用 “参数” 选项卡上的控件管理方法参数:
要添加新参数,请单击(Alt+Insert)并在相应字段中指定新参数的属性。如有必要,请选择 Use Any Var 选项。
指定如何处理方法调用。为此,请选择以下方法调用选项之一:
如果你想要修改方法调用,请选择 “修改”。
如果要使现有方法调用保持不变,请通过重载方法选择 “委托”。
要立即执行重构,请单击 “重构”。
若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 “预览”。
Refactor | Move
- 要将整个包移到另一个包中,请选择第一个选项,单击 “确定”,然后在 “移动” 对话框中指定移动选项。
- 要将目录移动到另一个源根目录,请选择第二个选项,单击“确定”,然后指定目标源根目录。
- 要将目录移动到其他目录,请选择第三个选项,单击“确定”,然后指定目标目录。
切割类与外部的实例依赖,如果类引用任何外部类字段,则 “使类静态” 对话框建议将外部类作为参数传递给内部类构造函数。
Refactor | Make Static
Refactor | Move
Refactor | Move
Refactor | Make Static
Refactor | Convert to Instance Method
在编辑器中,将插入符号放在要重构的方法的声明或用法上。该方法应该是静态的,其参数的类型应该是项目中的类。换句话说,你不能使用这样如String类型的参数。
执行以下操作之一:
注意:所选的方法必须是静态的,并且必须至少接收当前项目中包含的某一个类作为参数。
在 “重构” 菜单上,选择 “转换为实例方法(Convert to Instance Method)”。
右键单击该方法并选择:重构| 转换为实例方法(Refactor | Convert to Instance Method)。
将显示 “转换为实例方法” 对话框。
在 “选择实例参数” 列表中,在转换后选择您希望该方法属于的类。此类在方法内的所有用法都被替换。
若要更改已转换方法的可见性范围,请在 “可见性” 区域中选择新范围。默认情况下,转换后的方法将没有范围声明(等同于 public)。
预览并应用更改。
Refactor| Generify
- 在 Project 或 Structure 视图中选择代码转换级别(可以是方法、类、包或目录),也可以将光标放在编辑器中的类或方法名称上。如果您想将泛型应用于单个代码片段,只需在编辑器中选择它。
- 在主菜单或选择的上下文菜单上,选择:重构| Generify。将出现 Generify 对话框。
- 定义重构选项。有关详细信息,请参阅对话框说明。
- 预览并应用更改。
Refactor|Replace Constructor with Factory Method
Refactor|Replace Constructor with Builder
6.3 继承->delegateRefactor | Replace Inheritance With Delegation
创建了一个私有的内部类,它继承了以前的超类或接口。通过新的内部类调用父节点的选定方法。



