作为resharper 5现在具有DIY模式,您编写了哪些模式来修复您看到的编码习惯?是否有在线resharper模式存储库?我认为这里是投票支持您最喜欢的模式的逻辑场所。
我认为这是“小规模编程”的编程。
我认为这是“小规模编程”的编程。
搜索模式:
$type$ $var$ = $expr$;
$stmt$
$var$.Dispose();
$var$ = null;
using (var $var$ = $expr$)
{
$stmt$
}
搜索模式:
$type$ $var$ = $expr$;
$stmt$
$var$.Dispose();
$var$ = null;
return $something$;
using (var $var$ = $expr$)
{
$stmt$
return $something$;
}
搜索模式:
if (!$nullable$.HasValue) $nullable$ = $value$;
$nullable$ = $nullable$ ?? $value$;
搜索模式:
$str1$.Equals($str2$)
$str1$ == $str2
虽然我们希望有一个完整的在线SSR模式目录,但目前还不存在。这绝对是未来的待办事项清单。 然而,在ReSharper文档页面上,有一个链接到基于ReSharper团队使用的模式的示例模式目录。
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$
}
今天早上我刚知道这个存在。我首先要做的事情是尝试确保在等式检查中,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