【问题标题】:Is there a way to change method parameter list intellij?有没有办法改变方法参数列表intellij?
【发布时间】:2016-11-06 07:50:08
【问题描述】:

为了概括,我们举个这样的例子。

我有一个类似的方法。

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

我想把它改成这样。

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

有没有一种首选的方法可以在不破坏用法的情况下使用 intellij 做到这一点?

【问题讨论】:

    标签: java methods intellij-idea parameters


    【解决方案1】:

    您可以使用 intellij 执行以下操作。

    使用Refactor -> Change Signature 菜单,您可以:

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

    转到Refactor -> Change Signature 菜单

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

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

    更多内容请关注here

    【讨论】:

      【解决方案2】:

      你可以右击方法名,然后refactor -> change signature(或者command + F6如果你在mac上,Ctrl + F6 在 Windows、Linux 中)。

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

      【讨论】:

        【解决方案3】:

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

        添加第三个参数对我来说似乎走错了路。

        可能您最喜欢的想法可以更改您的所有客户端代码,以使用 null 或一些空字符串作为新参数......但同样:这“闻起来”对我来说太糟糕了。

        您会看到:您的代码一方面应该是冗长的,但要尽可能“简洁”。含义:您的方法中的每一个参数都存在,因为您的代码需要它们。所以,如果你要添加第三个参数,那可能大部分时间都是空的;并且仅在您希望它“表示”它非空的那些地方,好吧,我的两分钱:不要那样做:显然,两个arg + null方法将做除三个之外的其他事情-arg 方法。如果是这样 - 保留两个单独的方法。

        请记住:添加到方法中的每个参数都会增加测试范围的多样性。你真的不想那样。您的方法应该尽可能简单,以便尽可能轻松地对其进行测试。

        【讨论】:

        • 我问这个问题只是想知道是否有任何 IDE 快捷方式。不是在 oop 的角度。你可以看到我举了一个虚拟的例子。 :)
        • @AdInfinitum 没问题 :),从他的回答中可以看出一些东西。我也没有投反对票。
        • @Jagermeister 如果您正在使用像 Guice 这样的现代 DI 框架,您可能已经注意到这种情况可能会发生。并且同意你的观点,从 oop 的角度来看这是一个坏主意。
        • @SupunWijerathne 不客气;我很高兴你得到了你正在寻找的具体答案。
        【解决方案4】:

        只是在这里补充一些缺失的点。

        • 添加参数、更改参数类型、更改方法的返回类型在 IDE 中不会自动化。

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

        • 添加/更改异常也几乎是半自动化的,因为 IDE 不知道方法用法是 try/catch 还是传递异常。您必须手动检查每个位置并在每个位置执行您想要的操作。

        【讨论】:

          猜你喜欢
          • 2017-01-16
          • 2020-04-27
          • 2020-04-23
          • 1970-01-01
          • 1970-01-01
          • 2017-10-16
          • 2020-10-22
          • 2012-03-01
          • 1970-01-01
          相关资源
          最近更新 更多