Eclipse-提取局部变量仅替换范围内的所有事件

时间:2018-09-02 13:06:26

标签: java eclipse refactoring local-variables

我正在使用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();
...

1 个答案:

答案 0 :(得分:2)

有第三种选择:

  1. 确保已选中复选框将所有出现的所选表达式替换为对本地变量的引用
  2. 点击 预览>
  3. 取消选中不应替换表达式的复选框(在您的情况下为最后两个)