我可以通过重构或正则表达式重新排序参数吗?

本文关键字:排序 参数 新排序 重构 可以通过 正则表达式 | 更新日期: 2023-09-27 18:08:23

我写了很多代码,使用我创建的一个方法,签名如下:

public void DrawString(int x, int y, string str, 
    TextAlignment align, Color col) { ... }

我很后悔这样排列参数,并想将签名更改为:

public void DrawString(int x, int y, string str, 
    Color col, TextAlignment align) { ... }

目前我使用两个签名(我做了一个重载,将先前的签名传递给后者),但我想完全删除先前的签名。

重新排序参数,我相信,可能有副作用,但在我的特殊情况下,它不会。虽然Visual Studio 2013似乎有一个重新排序参数重构(c#)功能,但它肯定不是为Express用户准备的,因为我没有看到任何地方有"重新排序参数"选项。

是否有一种方法可以改变这个参数的顺序,而不需要手动更新数百个方法调用?

我可以通过重构或正则表达式重新排序参数吗?

我认为重构是唯一合理的解决方案。你有很多选择。最明显的方法是:手动切换输入参数。在那之后,在编译过程中,你会在所有你调用DrawString的地方得到一个错误列表。所以只需手动修复所有错误。另一个选择是:安装一些提供扩展重构功能的工具,比如ReSharper/CodeRush/JustCode。另一个选项(您已经使用过)是重载:

 public void DrawString(int x, int y, string str, Color col, TextAlignment align)
 {
     DrawString(x, y, str, align, col);
 }

将原来的DrawString标记为[Obsolete],以后只使用重载方法。但我不会走这边。代码将变得非常不清晰。如果你对我的个人观点感兴趣,那么我选择第二种方法(使用一些帮助你完成日常任务的工具是个好主意)。