考虑到这个简化的场景:
private String name;
private String getString() {
return "Hello, " + name + "!";
}我想用一个private static capitalize(String)方法来大写这个名字。如果我将name提取到一个方法(CTRL-2 + M)中,那么我会得到一个引用name字段的private String capitalize()方法。
下面是期望的结果:(在实现大写之前)
private static String capitalize(String name) {
return name;
}我真的希望capitalize是静态的,因为我可以将它移到其他类中(SHIFT-ALT-V)。此外,当有多个字段时,将它们移动到参数也很繁琐。
有没有办法提取一个方法,或者引入一个将字段作为参数传递的间接方法?它不需要是一个单独的重构;组合起来仍然可以避免输入和人为错误。
发布于 2015-06-13 00:30:16
下面是一个可行的序列:
将字段引用"toCap"
toCap,将其命名为capitalizeAlt-Shift-I).
toCap toCap现在,您可以将capitalize移到您喜欢的位置。
对于这种情况,可能不值得这样做(直接创建静态capitalize方法更简单),但我可以看到,在更复杂的情况下,这种重构序列实际上可能会有所帮助。
这个序列背后的一般模式是:在提取方法之前,使用新的局部变量准备要传递给方法的所有参数。提取方法后,内联不需要的局部变量。
发布于 2015-06-16 22:35:24
CTRL-1调用方中提取的方法的警告,然后选择+ Change method: Add parameter(删除))。
提取的静态方法现在应该具有隐藏字段的参数,因为它们具有相同的名称。
https://stackoverflow.com/questions/30790100
复制相似问题