-2

我有一大堆这样的方法调用:

thing.doOneThing(a);
thing.doOneThing(b);
thing.doOneThing(c);
thing.doOneThing(d);
// ... etc

但是Thing该类有一个等效的doManyThings方法,因此可以将其重写为:

thing.doManyThings(a, b, c, d /* etc */);

在 intellij 中进行这种重构的正确方法是什么?

我一直在使用结构替换来做:

  • 替换$t$.doOneThing($a$); $t$.doOneThing($b$);$t$.doManyThings($a$, $b$);
  • $t$.doManyThings($a$); $t$.doOneThing($b$);($a$具有无限重数)替换为$t$.doManyThings($a$, $b$);
  • $t$.doManyThings($a$); $t$.doManyThings($b$);($a$$b$具有无限重数) 替换为$t$.doManyThings($a$, $b$);

我必须一遍又一遍地做最后一步,因为它合并了成对的匹配语句,所以这只是将doManyThings每次调用的次数减半,并且需要执行几次才能将它们全部合并。

这感觉比它应该的更难 - 请你能指出实现这一目标的超级明显的更好方法吗?:)

4

1 回答 1

0

就我个人而言,我会编写一个正则表达式来替换所有字符串 "thing.doOneThing(" 用逗号 (,) 和另一个替换所有字符串 ");\n" 什么都没有(或者反过来,你也可以这样做在选定区域上,以防您在文件中有更多不想修改的代码)。根据您采用的方法,您将有一个额外的前导/尾随逗号,但在此之后,您将有一个逗号分隔的所有参数列表。然后,您可以将所有这些调用替换为对 doManyThings 方法的一次调用,您将在其中粘贴逗号分隔的参数列表。

于 2017-10-10T14:48:23.693 回答