1

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

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

这是 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
}
4

1 回答 1

3

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

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

在哪里

X2 是标识符
i 是标识符
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。

于 2013-04-14T18:37:14.697 回答