提取方法
最后修改时间:2023 年 10 月 4 日通过提取方法重构,您可以获取可分组的代码片段,将其移至单独的方法中,并用对该方法的调用替换旧代码。
笔记
此重构也可以作为编辑器中的意图操作使用。选择您要提取的代码,按并选择提取方法。AltEnter
当您提取方法时,您需要检查变量。如果有一个输出变量,则将其用作提取方法的返回值。如果有多个输出变量,则可能无法应用提取方法重构,并出现错误消息。
在这种情况下,有多种解决方法可以让Extract Method发挥作用。例如,您可以引入一个包含所有输出值的特殊数据类。
笔记
Extract Method 重构有以下限制:
当存在对泛型类型的引用时,重构不起作用。
在自动模式下,重构不适用于多个输出值。在应用重构之前,您必须更改代码。
提取方法:
选择要提取到方法的代码片段。
按或转到重构 | 摘录| 方法。CtrlAlt0M
在打开的对话框中,配置方法选项,例如可见性、参数等。如果需要,您还可以更改方法的名称。
单击“确定”。
如果 IntelliJ IDEA 检测到可以通过调用提取的方法来替换的重复代码片段,它会为您提供预览代码、并排比较并在需要时进行更改的功能。您还可以右键单击重复的代码片段并选择“排除”以从重构中删除此类代码。
准备就绪后,单击“Do Refactor”完成重构。请注意,如果只有一个重复项,IntelliJ IDEA 会默默地替换它。
最后,如果 IntelliJ IDEA 检测到仅部分重复的代码,它建议提取参数以继续重构。
提示
要反转提取方法重构,请按 调用内联重构。CtrlAlt0N
例子
让我们将a+b
表达式提取到一个方法(Kotlin 的函数)中,并替换重复项。
前 | 后 |
---|---|
|
|
前 | 后 |
---|---|
|
|
使用 Java 记录提取方法
从 Java 16 版本开始,您可以使用 Java 记录提取方法。当您有多个变量时,这可能会有所帮助。在这些情况下,IDE 首先建议将这些变量包装到新记录或 Bean 类中,然后执行方法提取。
class SomeClass {
public static void main(String[] args) {
int values[] = {1, 2, 3, 4, 5};
int sum = 0;
int num = 0;
for (int n : values) {
sum += n;
num++;
}
System.out.println("Sum: " + sum + " - Num: " + num);
}
}
class SomeClass {
public static void main(String[] args) {
Statistics result = getStatistics();
System.out.println("Sum: " + result.sum() + " - Num: " + result.num());
}
private static Statistics getStatistics() {
int values[] = {1, 2, 3, 4, 5};
int sum = 0;
int num = 0;
for (int n : values) {
sum += n;
num++;
}
Statistics result = new Statistics(sum, num);
return result;
}
private record Statistics(int sum, int num) {
}
}
感谢您的反馈意见!