java - Eclipse - 提取局部变量仅替换范围内的所有出现

标签 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();
...

可以在调用之间内部更新状态

我只有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();
...

最佳答案

还有第三种选择:

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

关于java - Eclipse - 提取局部变量仅替换范围内的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137330/

相关文章:

javascript - 重构$(document).ready(),目前有2个实例

java - 为什么多个 nextInt() 有效?

java - 是否可以强制两个类在编译时实现相同的字段名称但类型不同?

android - res/values/strings.xml 的 Eclipse Android 设计 View 不再工作

java - JOptionPane 降序排列数组*几乎就在那里*

c# - 实现 if else 语句的通用方法

java - REST 请求期间 HTTP 状态 500

java - 图表/小部件/仪表/UI

java - 正确的编码方式

ruby - 寻找完美平方算法的优化