我正在使用Eclipse Neon
我在一个过大的方法中有一个重复的方法调用:
myObj.getStatus()
例如
if (myObj.getStatus() == ONE || myObj.getStatus() == TWO ) {
}
myObj.changeMe();
if (myObj.getStatus() == THREE || myObj.getStatus() == FOUR) {
}
myObj.changeMe2();
...
状态可以在呼叫之间进行内部更新
我只有两个选择
提取局部变量,并选中“仅在范围(方法)中替换所有出现的内容”是不好的(因为getStatus()
实际上不是最终的)
提取局部变量并手动替换每个相关的myObj.getStatus()
调用
我最终提取了一个方法,然后提取了局部变量并检查了“替换所有匹配项”
这是最有效的选择吗?还是只能在特定的上下文/日食中替换选定的文本?是否可以将其视为对日食重构的增强?
编辑
我希望将其重构为最接近的封闭块,类似于JavaScript的let
实际上代码不是同一级别,但是eclipse替换了方法中的所有匹配项
if (myState.equals(STATE_ONE){
if (myObj.getStatus() == ONE || myObj.getStatus() == TWO ) {
}
myObj.changeMe();
}
if (myObj.getStatus() == THREE || myObj.getStatus() == FOUR) {
}
myObj.changeMe2();
...
答案 0 :(得分:2)
有第三种选择: