我有一大堆这样的方法调用:
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
的次数减半,而且需要做几次将它们全部合并。
这比它应该的感觉更难 - 请你能指出我实现这一目标的超级明显更好的方法吗? :)
答案 0 :(得分:0)
就个人而言,我会写一个正则表达式来替换所有字符串“thing.doOneThing(”用逗号(,)和另一个替换所有字符串“); \ n”到没有(或者反过来,你可以如果您在文件中有更多您不想修改的代码,也可以在选定区域执行此操作。根据您采用的方法,您将有一个额外的前导/尾随逗号,但在此之后,您将拥有一个以逗号分隔的所有参数的列表。然后,您可以通过对doManyThings方法的单个调用替换所有这些调用,您将粘贴以逗号分隔的参数列表。