重构技巧1 - 消除重复new创建
提炼函数ctrl + alt + M,选择对应的代码块,进行提炼
提炼变量ctrl + alt + v,选择要提炼的变量,进行提炼
搬移函数重构 -> 移动实例方法 或 F6,选中方法,进行搬移
inlIne使用(内联) inLine重构局部变量选中变量:ctrl + alt + n
示例:
private static Object parseBoolean(Listarguments, Option option) { Object value; value = arguments.contains("-" + option.value()); return value; }
// 点击value(return value)的value // 通过快捷键 ctr + alt + n // 内联后: private static Object parseBoolean(ListinLine重构方法arguments, Option option) { return arguments.contains("-" + option.value()); }
批量代码拷贝
示例:
static class StringOptionParser implements OptionParser {
@Override
public Object parser(List arguments, Option option) {
return parseString(arguments, option);
}
}
private static Object parseString(List arguments, Option option) {
int index = arguments.indexOf("-" + option.value());
return String.valueOf(arguments.get(index + 1));
}
-
这时如果想将parseString的内容,copy到StringOptionParser的方法上,可以使用 Ctrl + alt + n进行inLine(IDEA进行copy 粘贴)
有如下几种策略:这里选第三种,代码示例如下
static class StringOptionParser implements OptionParser { @Override public Object parser(Listarguments, Option option) { int index = arguments.indexOf("-" + option.value()); return String.valueOf(arguments.get(index + 1)); } } // 由于选择,保留方法,因此我们需要手动修改 private static Object parseString(List arguments, Option option) { int index = arguments.indexOf("-" + option.value()); return String.valueOf(arguments.get(index + 1)); } // 修改后 private static Object parseString(List arguments, Option option) { return new StringOptionParser().parser(arguments, option); } -
在通过inLine方法,将代码拷贝回来
if (parameter.getType() == String.class) { value = parseString(arguments, option); } // inLine // 这时候本来的方法就没了 if (parameter.getType() == String.class) { value = new StringOptionParser().parser(arguments, option); }
-



