文章目录
- 重构项目案例参考
- 重构技巧1 - 消除重复new创建
- 重构技巧2 - 提炼函数,消除重复计算
- 提炼函数
- 提炼变量
- 搬移函数
- inlIne使用(内联)
-
- 重构
-
重构项目案例参考
重构技巧1 - 消除重复new创建
重构技巧1 - 消除重复new创建
重构技巧2 - 提炼函数,消除重复计算
重构技巧2 - 提炼函数,消除重复计算
提炼函数
ctrl + alt + M,选择对应的代码块,进行提炼
提炼变量
ctrl + alt + v,选择要提炼的变量,进行提炼
搬移函数
重构 -> 移动实例方法 或 F6,选中方法,进行搬移
inlIne使用(内联)
inLine重构局部变量
选中变量:ctrl + alt + n
示例:
private static Object parseBoolean(List<String> arguments, Option option) {
Object value;
value = arguments.contains("-" + option.value());
return value;
}
private static Object parseBoolean(List<String> arguments, Option option) {
return arguments.contains("-" + option.value());
}
inLine重构方法
批量代码拷贝
示例:
static class StringOptionParser implements OptionParser {
@Override
public Object parser(List<String> arguments, Option option) {
return parseString(arguments, option);
}
}
private static Object parseString(List<String> 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(List<String> arguments, Option option) {
int index = arguments.indexOf("-" + option.value());
return String.valueOf(arguments.get(index + 1));
}
}
private static Object parseString(List<String> arguments, Option option) {
int index = arguments.indexOf("-" + option.value());
return String.valueOf(arguments.get(index + 1));
}
private static Object parseString(List<String> arguments, Option option) {
return new StringOptionParser().parser(arguments, option);
}
-
在通过inLine方法,将代码拷贝回来
if (parameter.getType() == String.class) {
value = parseString(arguments, option);
}
if (parameter.getType() == String.class) {
value = new StringOptionParser().parser(arguments, option);
}
重构
重构菜单栏
ctrl + alt + shift + T
IDEA尽可能使用接口
右键 -> 重构 -> 尽可能使用接口
参考案例
- 目前调用
依赖具体实现
if (parameter.getType() == int.class) {
IntOptionParser parser = new IntOptionParser();
value = parser.parse(arguments, option);
}
- 利用尽可能使用接口,将其修改为接口方式
- 效果
if (parameter.getType() == int.class) {
OptionParser parser = new IntOptionParser();
value = parser.parse(arguments, option);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)