【发布时间】:2013-07-26 08:26:59
【问题描述】:
我目前正在重构一些应用程序代码,我希望能够从子例程中删除一些参数。例如,假设我有以下[1]:
sub do_something {
my ( $param1, $param2, $param3, $param4 ) = ( @_ );
....
}
但是,作为重构的一部分,我使参数 2 和 3 变得多余。更新这个方法签名很容易,但是有没有一种直接的方法来更新对它的所有调用?
我一直在做一些定制的 grep/sed/perl 来做这件事,但是对 sub 的一些调用是多行的,这让我很痛苦,每次我在一个项目上这样做这是定制的。是否有适合进行这种特定重构的工具?
[1] - 不是实际参数或子程序名称,我向你保证!
【问题讨论】:
-
我不知道有任何快捷方式,但您的问题是找到可靠的方法调用,还是编辑它们以符合新界面?
-
找到它们很容易。所有实例都在一个包中,可以使用 grep 找到。这是编辑的问题。我可以编写一些脚本来分解调用参数列表并将其重新组合在一起,但这很可能是定制的。也许是时候为自己编写我自己的重构模块了。
-
您说调用有时分布在多行上,因此我假设生成这些参数需要进行非平凡的计算。所以我希望在许多调用站点上手动清理是必要的,因为仅仅删除参数可能只会删除一些提到的计算。例如,在调用之前可能会有一些行也将变得多余。
-
通话前肯定会有多余的线路。我的计划是删除参数,然后使用 git diff 的奇迹来检查哪些变量现在是多余的,并删除它们。
标签: perl refactoring