代码之家  ›  专栏  ›  技术社区  ›  GhostCat

有没有办法通过使用Intellij添加外部方法调用来重构?

  •  2
  • GhostCat  · 技术社区  · 6 年前

    我有这个:

    Arrays.asList(from(A, 14), from(A, 21), ...
    

    Arrays.asList(of(from(A, 14), 1), of(from(A, 21), 2), ...
    

    电话 from(A, number) 应该变成 of(from(A, number), anotherNumber) .

    换言之:我必须更新一份冗长的清单 from() 通过将调用封装在 of() 以及添加第二个参数。理想情况下,第二个参数只需向上计数。

    有没有办法用IntelliJ重构工具来实现这一点? (而不是全部手动操作)

    3 回复  |  直到 6 年前
        1
  •  2
  •   togise    6 年前

    您可以突出显示 from( 并使用“选择下一个事件”热键。一旦您选择了所有事件,只需将其替换为 of(from . 完成添加后 of ), .

    在Mac上,热键是“CTRL+G”,在Windows\Linux上是“ALT+J”。以下是热键列表 https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf

    这仍然是一个有点手动,但比一个一个做。

        2
  •  2
  •   CrazyCoder    6 年前

    • 提取方法 替换重复的 from(A, param)
    • 在提取的方法中写下 of(from(A, param), NNN)
    • 内联方法
    • NNN 带有您需要的数字(必须手动执行)

    如果有公式可以计算 anotherNumber number ,你可以用它代替 NNN公司

        3
  •  2
  •   Sam    6 年前

    “结构上替换”可以做一些你需要的事情。

    1. 选择 Edit &燃气轮机; Find Replace Structurally...
    2. 输入 from($a$, $b$) 作为搜索模板
    3. of(from($a$, $b$), i) 作为替换模板
    4. 选择 Scope : Current File (或 Selection ,如果您愿意的话)
    5. 查找
    6. 击中 Replace all

    假设 i 如果没有定义,你就会有很多错误。您可以使用 F2 并替换未定义的


    额外提示:在Mac电脑上,快跑 seq 1 100 | pbcopy 在终端将数字1-100放入剪贴板。然后,使用IntelliJ中的多个游标,单击“粘贴”。 1 将粘贴在第一个光标处, 2 在第二个,等等。