【问题标题】:In Eclipse, how to know which parameter is the cursor on a Java Method?在 Eclipse 中,如何知道哪个参数是 Java 方法上的光标?
【发布时间】:2017-01-24 17:57:58
【问题描述】:

在 Eclipse IDE 中,我有一个带有很多可空参数的 Java 方法

src.myCrazyFunction(year, name, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

我想调用带有城市参数“NY”的函数。 通过使用 Javadoc 工具提示,我必须计算参数直到“字符串城市”,然后:

src.myFunction(year, name, null, null, null, null, null, null, null, null, null, null, 'NY', null, null, null, null, null, null, null, null, null, null, null);

每次都要用这个方法统计参数真的很无聊。

我能知道光标所在参数的名称吗? CTRL+SPACE 将用于所有参数...

【问题讨论】:

  • 你真的应该重构那个方法,让它没有那么多参数。
  • @puhlen 最好同情那个在一个名为“人类理性的午夜”的企业项目中苦苦挣扎的家伙。
  • 当按 CTRL+空格键时,eclipse 会为我显示 bold 中的参数。像这样:imgur.com/a/vZTxh,(移动光标时,光标下的参数变为粗体)
  • @nos 我盗用了你对my answer 的评论,但我确实将这张非常漂亮的图片归功于你。

标签: java eclipse ide


【解决方案1】:

第一件事:如果真的是这样,你应该改变这个方法,这太疯狂了。其次,我不知道您的真正意思,但是在 Eclipse 中,当您键入 src. 时,它会显示所有可用的方法,单击您的方法,将生成带有参数名称作为参数的代码(供您更改那)。例如,如果您键入 "someString".indexOf 并选择一个方法,它将生成 "someString".indexOf(ch, fromIndex)(这些不是变量或任何东西,它们是在 indexOf 方法声明中指定的参数名称,如果您不这样做,它们将给出编译时错误不要改变它们)。您可以看到您的参数名称,因此将特定名称更改为NY 很快,您仍然需要自己编写空值。希望我理解正确。

【讨论】:

  • 我同意这种方法很疯狂,但有时开发设计是由其他人决定的。问题是我必须用这样的函数审查代码,它们是以前写的。所以,我到达代码的第 280 行,我看到一个有 20 个参数的函数。我想知道参数列表中哪个参数是“NY”
【解决方案2】:

正如@nos 在comment 中解释的那样,在 Eclipse 中按 ctrl+space 将弹出一个工具提示,突出显示(粗体)光标所在的参数,如提供的图像所示@nos:

不过,这还是需要IDE支持,使用起来比较麻烦(必须定位光标并触发才能使用),所以应该考虑其他方式。

任何方法都不应该采用 24 个参数,但如果你绝对必须,那么你应该注释所有不自我解释的参数值,例如yearname 可能已经足够解释了,但是像 null0false42true 等值并不能传达含义,所以你应该评论他们:

src.myFunction(year,
               name,
               /*address1*/null,
               /*address2*/null,
               /*city*/null,
               /*state*/"NY",
               /*zipcode*/null);

这样一个不经意的观察者就会确切地知道这些值的含义。

另一种方法是将所有参数值包装在 POJO 中并使用构建器模式。

src.myFunction(new MyPojo()
               .setYear(year)
               .setName(name)
               .setState("NY"));

【讨论】:

  • 这段代码是写的,我必须审查它。我喜欢注释参数和定义 POJO 的想法,但是代码是编写的,所以我必须注释所有此类行或定义 POJO。如果之前写过函数调用,Eclipse中的CTRL+SPACE对光标所在的参数不起作用
  • CTRL+SPACE 适用于已经编写好的调用,例如将光标放在任何null 值之前,按CTRL+SPACE,然后选择方法(如果有重载,请确保选择正确的方法)。
  • 感谢 Andreas,但它显示了所有参数,但我想知道光标在哪个参数中。
  • 正如您在此答案的屏幕截图中所见,光标所在的参数以粗体表示。按 CTRL+SPACE 会弹出一个对话框,列出方法重载(和一些其他选项)。通过双击鼠标用箭头键突出显示并按ENTER选择方法,然后将显示你在这个答案中看到。
【解决方案3】:

按参数提示/上下文信息 - Ctrl+Shift+SPACE

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多