鉴于我有如下代码:

void foo() {
  String str = "hello";

  a(str, 1);
  b(str, true);

  a(str, 2);
  b(str, false);
}

我想提取一个新的方法c像:

void foo() {
  String str = "hello";

  c(str, 1, true);
  c(str, 2, false);
}

但是,自动提取方法重构将仅提取a / b对之一。 我的猜测是它不喜欢不同的常数。 我可以通过以下方法解决此问题:首先提取局部变量,然后提取方法,然后内联先前提取的变量,但是我仍然必须手动查找所有实例。 通过这么多的工作,我不妨在查看每个零件时自己进行全部更改。

有什么技巧让我知道让Eclipse更加努力地搜索以提取这种类型的代码吗?

===============>>#1 票数:0 已采纳

是的,您需要将常量提取到变量中,然后将其放在顶部以告诉工具将其作为参数传递给提取的方法。

void foo() {
  String str = "hello";
  int constant = 1;
  boolean boolValue = true;
  a(str, constant);
  b(str, boolValue);

  constant = 2;
  boolValue = false;
  a(str, constant);
  b(str, boolValue);
}

进行提取方法应提供以下内容:

public void c(String str, int constant, boolean boolVal){
    a(str, constant);
    b(str, boolVal);
}

  ask by Shepmaster translate from so

未解决问题?本站智能推荐:

3回复

如何在eclipse中提取将字段或常量值转换为参数的方法

情况:我正在研究遗留代码并尝试提高可读性。 以下示例应该可视化意图: 想象一下,使用大约50个常量大约有50个someMethod调用。 我想对该代码进行安全的自动重构,以便contentOfSomeMethods方法更改为 并生成两个额外的方法: 天真的方法是提取局
1回复

eclipse是否具有免费的Java重构插件,可以提取包含字段和方法的类?

该重构示例在IntelliJ IDEA中可用,因此基于以下问题: Java重构工具 像ReSharper这样的工具,但适用于Java吗? 我怀疑我的问题的答案是否定的,但是我希望自问这些问题以来情况可能已经改变了?
2回复

如何将字段作为参数传递,将代码提取到Eclipse中的静态方法中?

在这种简化的情况下: 我想使用private static capitalize(String)方法将名称private static capitalize(String) 。 如果我将name提取到方法(CTRL-2 + M)中,则将获得引用name字段的private String
2回复

如何在Eclipse中将常量重构为枚举?

如何使用eclipse将Java常量重构为枚举? 我发现eclipse中没有内置功能: http : //help.eclipse.org/juno/index.jsp?topic =%2Forg.eclipse.jdt.doc.user%2Freference%2Fref - menu
2回复

Eclipse:提取方法功能失败

为了更好地读取冗长的方法,我想用一种方法替换重复使用的代码块(仅分配)。 因此,我选择了代码块并运行了Eclipse的Extract Method功能,但是由于以下错误而失败: 返回值不明确:所选块包含多个对局部变量的赋值。 受影响的变量是: 我怎样才能解决这个问题?
1回复

在eclipse中提取方法似乎不起作用

我尝试在eclipse中进行简单的重构(提取方法)。 我选择以下代码块并执行alt + shift + M(提取快捷方式)。 之后只使用size变量。 我收到错误消息: 不明确的返回值:所选块包含多个局部变量赋值。 受影响的变量是: NodeList html
2回复

重构移动和提取方法的硬编码,解析类及其引用?

目前,我正在研究重构任务及其优先级。 我需要检查每个任务的效果(例如,移动方法,提取方法,删除方法),并在类和项目级别进行一些计算。 在代码级别手动处理这些任务的最佳方法是什么? 我正在考虑在其主应用程序之上构建Eclipse插件,该应用程序打开重构菜单并进行重构任务,但它似乎不是
2回复

Eclipse重构方法(特别是提取方法)已停止工作

一段时间以来,我一直在愉快地使用eclipse indigo进行android开发。 在过去的几天中,它已停止重构。 我已经尝试过清洁项目,并且当然要重新启动Eclipse。 我还尝试过按以下建议重命名org.eclipse.core.resources目录:- http://l
1回复

在Eclipse / Java中进行重构:之后应用“提取方法”(Alt + Shift + M)

我想知道是否可以通过调用较早提取的方法来替换某些代码。 例如,我有一个具有类似模式的类: 我使用一种方法进行重构,但是由于某些原因,某些事件仍然没有被重构(如果未选中“ Replace additional occurrences... ,或者稍后粘贴了相同的代码,则可以):
2回复

如何使用eclipse提取变量并将其转换为类?

我有一个问题,我将HashMap定义为变量,应该在该类中使用类以获得更好的可扩展性。 我想蚀重构 变量转换为结果类类型,然后可以对其进行扩展。 考虑到整个项目都使用了HashMap ,我该如何实现? 我希望结果不是HashMap ,而是对象。