考虑到这个简化的场景:
private String name;
private String getString() {
return "Hello, " + name + "!";
}
我想使用私有(private)静态大写(String)
方法将名称大写。如果我将 name
提取到方法中 (CTRL-2 + M),那么我会得到一个引用 name
的 private String Capitalize()
方法字段。
这是期望的结果:(在实现大写之前)
private static String capitalize(String name) {
return name;
}
我真的希望capitalize
是静态的,因为我可以将它移动到其他类(SHIFT-ALT-V)。另外,当有多个字段时,将它们移动到参数是很乏味的。
有什么方法可以提取方法,或者引入将字段作为参数传递的间接方法?它不需要是一次重构;组合仍然可以减少打字和人为错误。
最佳答案
这是一个可行的序列:
- 将字段引用
name
提取到一个新的局部变量(Alt-Shift-L
),并将其命名为“toCap” - 从对
toCap
的引用中提取一个方法,将其命名为“capitalize” - 将修饰符
static
添加到capitalize
- 内联额外的局部变量
toCap
(Alt-Shift-I
)。
现在您可以将大写
移动到您喜欢的位置。
对于这个确切的场景,可能不值得(直接创建静态大写方法更简单),但我可以看到,在更复杂的情况下,这一系列重构实际上可以有所帮助。
此序列背后的一般模式是:在提取方法之前,使用新的局部变量准备要传递到该方法中的所有参数。提取方法后,内联不需要的局部变量。
关于java - 如何将代码提取到 Eclipse 中的静态方法中,并将字段作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790100/