我正在使用 Eclipse Neon
我在一个过大的方法中有一个重复的方法调用:
myObj.getStatus()
例如
if (myObj.getStatus() == ONE || myObj.getStatus() == TWO ) {
}
myObj.changeMe();
if (myObj.getStatus() == THREE || myObj.getStatus() == FOUR) {
}
myObj.changeMe2();
...
可以在调用之间内部更新状态
我只有2个选择
提取局部变量并检查仅在范围内替换所有出现的情况(方法),这不好(因为
<getStatus()
不是有效的最终结果)提取局部变量并手动替换每个相关的
myObj.getStatus()
调用
我最终提取了一个方法,然后提取了局部变量并检查了替换所有出现的情况
这是最有效的选择吗?或者我可以仅在 Eclipse 中的特定上下文/选定文本中进行替换吗?如果不是,这可以被视为 Eclipse 重构的增强吗?
编辑
我希望重构到最近的封闭 block ,类似于 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();
...
最佳答案
还有第三种选择:
- 确保复选框用对局部变量的引用替换所有出现的所选表达式已选中
- 点击预览>
- 取消选中不应替换表达式的复选框(在您的情况下为最后两个)
关于java - Eclipse - 提取局部变量仅替换范围内的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137330/