有没有办法改变方法参数列表intellij?

问题描述:

为了一般化,我们举一个这样的例子。有没有办法改变方法参数列表intellij?

我有一个这样的方法。

public void mymethod(int param1, String param2){ 
    //do something 
} 

我想将它改成这样的东西。

public void mymethod(int param1, String param2, String param3){ 
    //do something 
} 

有没有一个首选的方法来做到这一点与intellij没有打破用法?

你可以用intellij做以下事情。

随着Refactor - >Change Signature菜单中,您可以:

  • 更改方法的名称,返回类型和可见性范围。
  • 添加新参数并删除现有参数。请注意,您也可以使用专用的Extract Parameter重构来添加参数。
  • 重新排序参数。
  • 更改参数名称和类型。
  • 添加和删除异常。
  • 通过方法调用层次传播新的参数和异常。

要转到Refactor - >Change Signature菜单

在编辑器中,将光标移到要更改其签名的方法的名称中。 执行下列操作之一:

  • 按下Ctrl键+ F6
  • 选择重构|在主菜单中更改签名。
  • 选择重构|从上下文菜单中更改签名(右键单击)。

如需更多信息,请看看here

从干净的代码角度来看,答案很简单:不要这样做 - 您的方法的参数越少越好!

添加第三个参数看起来像是给我一个非常错误的路线。

也许你最喜欢的想法可以改变你的所有客户端代码使用null或一些空字符串用于新的参数......但是又一次:那个“味道”也不好。

您会发现:您的代码一方面应该是冗长的,但尽可能“简洁”。含义:因为您的代码需要它们,所以方法中的每个参数都存在。所以,如果你要添加第三个参数,那可能大部分时间都是空的;只有在你希望它“意味着”它非空的地方,那么,我的两分:不要那样做:显而易见,两个arg + null方法将会比三个方法做别的事情-arg方法。如果是这样 - 保留两种单独的方法。

请记住:您添加到方法中的每个参数为您的测试范围添加了更多的变体。你真的不想那样。你的方法应该尽可能简单,以便尽可能简单地进行测试。

+1

我问这个问题,只是为了知道是否有任何IDE的快捷方式。不在oop视角。你可以看到我采取了一个虚拟的例子。 :) –

+1

@AdInfinitum没有问题的:),有些事情要从他的答案中提取。而且我也没有投票。 –

+0

@Jagermeister同时,如果您使用的是像Guice这样的现代DI框架,您可能已经注意到可能会发生这种情况。并同意你在oop视角下这是一个不好的主意。 –

您可以右键单击方法的名称,然后refactor - >change signature(或命令 + F6,如果你是在Mac上,按Ctrl + F6 的Windows,Linux)。

应打开一个新窗口,您可以在其中添加和删除新参数,以及更改方法的可见性。

只是为了在这里添加一些失分。

  • 添加参数,更改参数类型,更改方法的返回类型对于IDE来说不会自动化很多。

原因是IDE无法猜测并创建或替换已更改参数或方法用法的分配。

  • 添加/更改异常也几乎是半自动的,因为IDE不知道try/catch还是传递异常与方法的用法。您必须手动完成每项任务,并在每个地方做您想做的事。