你使用什么ReSharper 5模式?

7
作为resharper 5现在具有DIY模式,您编写了哪些模式来修复您看到的编码习惯?是否有在线resharper模式存储库?我认为这里是投票支持您最喜欢的模式的逻辑场所。
我认为这是“小规模编程”的编程

2
一个Resharper模式仓库会非常棒! - Chuck Conway
1
惊讶于这里没有更多的答案。很想看看其他人如何利用这个功能。 - Ryan Rodemoyer
4个回答

5
我目前正在对一个旧应用程序进行深度重构。以下是我使用的一些 ReSharper(6.1)模式来解决一些代码问题:

应用“using”模式

搜索模式:

$type$ $var$ = $expr$;
$stmt$
$var$.Dispose();
$var$ = null;

替换模式:
using (var $var$ = $expr$)
{
    $stmt$
}

应用“using”模式(内部有返回值)

搜索模式:

$type$ $var$ = $expr$;
$stmt$
$var$.Dispose();
$var$ = null;
return $something$;

替换模式:
using (var $var$ = $expr$)
{
    $stmt$
    return $something$;
}

Resharper没有识别到使用??运算符的机会,所以我创建了一个模式。当$nullable$不为空时,它将条件赋值变为简单赋值(赋相同的值),但我认为生成的代码更易于阅读。

使用'??'运算符

搜索模式:

if (!$nullable$.HasValue) $nullable$ = $value$;

替换模式:
$nullable$ = $nullable$ ?? $value$;

最后,我最喜欢的之一是:

C#不是Java——你可以使用“==”来比较字符串

搜索模式:

$str1$.Equals($str2$)

替换模式:
$str1$ == $str2

4

虽然我们希望有一个完整的在线SSR模式目录,但目前还不存在。这绝对是未来的待办事项清单。 然而,在ReSharper文档页面上,有一个链接到基于ReSharper团队使用的模式的示例模式目录


3
请使用IDictionary<TKey,TItem>.TryGetValue而不是通过键值查找两次。
  • $dict$是一个IDictionary<,>
  • $key$只有一个参数
  • $moreCode$可以是任意数量的语句
  • $valType$是一个类型
  • $varName$是一个标识符

搜索模式:

if ($dict$.ContainsKey($key$)) {
    $valType$ $varName$ = $dict$[$key$];
    $moreCode$
}

替换模式:

$valType$ $varName$;
if ($dict$.TryGetValue($key$, out $varName$)) {
    $moreCode$
}

2

今天早上我刚知道这个存在。我首先要做的事情是尝试确保在等式检查中,null或常量始终位于左侧,以防止意外将对象设置为null。

我还没有弄清楚常量,但是对于null检查:

Search pattern: if($expr$ == null) $stmt$
Replace Pattern: if(null == $expr$) $stmt$
Placeholders: 
    expr: expression of type System.Object (or derived type)
    stmt: minimum of one statement, no maximum

然后我复制了那个模式,并创建了一个简单的仅查找模式:
Search pattern: if($expr$ = null) $stmt$
Placeholders: 
    expr: expression of type System.Object (or derived type)
    stmt: minimum of one statement, no maximum

这个工具可以找到任何你在if语句中设置为null的实例,不管你是否有意这样做。

我真的要花费几天时间来编写模式。但是我的软件会因此变得更好。

编辑:这里还有一个让我在我的代码库中感到烦恼的问题。由于Directory.CreateDirectory在内部检查目录是否存在,因此先调用Directory.Exists是多余的。

Search pattern:

if (!Directory.Exists($path$))
{
    Directory.CreateDirectory($path$);
}

Replace Pattern:

Directory.CreateDirectory($path$);

Placeholders: 
    path: identifier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接