有没有办法制定一个resharper规则来阻止ref& amp;出参数?

时间:2013-03-29 20:44:38

标签: c# visual-studio resharper structural-search

这是我的意见 ref& out参数会损害代码的可读性。在大多数情况下,可以使用泛型和替换它们来替换它们。可空类型。

当有人试图定义具有ref或out参数的函数时,我想让resharper发出警告。但是,我所能找到的只是一种重构声明使用参数的方法的方法。似乎没有任何现有的检查或方法来编写针对ref& amp;的定制模式。输出参数。

以下是out参数的常见用法:

int i;
if(!int.TryParse(str, out i))
{
    i = -1;
}

将其与此相比:

var i = str.TryParse<int>() ?? -1;

TryParse只是字符串的扩展方法。我有一个自定义resharper规则,强调任何ValueType.TryParse()调用。 请注意,现在可以将字符串解析为linq表达式的一部分。

T? TryParse<T>(this string str) 
{
   //magic
}

1 个答案:

答案 0 :(得分:3)

令我惊讶的是,以下自定义模式确实有效:

$type$ $X2$($pb$, ref $pt$ $i$, $pa$)
{
$stmts$;
}

其中

X2是标识符
我是标识符
type是一种对象或派生的 stmts是任意数量的陈述
pt是任何类型的对象或派生的 pa是任意数量的参数
pb是任意数量的参数

这与public int X(ref int y)以及private int X2(string j, ref int i, DateTime k)匹配。

我还没有找到匹配void方法的方法。

这是Visual Studio 2012上的ReSharper 7.1.1。