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

时间:2014-06-13 10:03:05

标签: c# refactoring

我使用我使用以下签名创建的方法编写了大量代码:

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似乎具有Reorder Parameters Refactoring (C#)功能,但它不能用于Express用户,因为我没有看到“重新排序参数”选项。

有没有办法在不手动更新数百个方法调用的情况下更改此参数顺序?

1 个答案:

答案 0 :(得分:0)

我认为,重构是唯一合理的解决方案。那里你有很多选择。最明显的是:只需手动切换输入参数。在此之后,在编译期间,您将在调用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],并在将来仅使用重载方法。但我不会这样。代码将变得非常不清楚。 如果你对我的个人意见感兴趣,那么我会选择第二种方式(使用一些可以帮助你完成日常工作的工具是个好主意)。