Новое сопоставление с образцом Resharper 5 кажется очень мощным, хотя для того, чтобы понять, как его использовать, нужно немного поработать.
Для тех, кто не знаком с этой функцией, это позволяет вам искать конкретные шаблоны в вашем коде. Экземпляры таких шаблонов могут при желании быть заменены альтернативой. В IntelliJ это называлось структурным поиском и заменой. Это гораздо эффективнее, чем простой поиск / замена RegEx.
Я хотел бы собрать серию шаблонов, которые используют люди, чтобы я мог научиться использовать эту функцию лучше.
Я предлагаю, чтобы каждый ответ включал:
.NET 4 представляет метод System.Enum.HasFlag
, который может привести в порядок ваш код.
До:
(myValue & MyFlagsEnum.Foo) == MyFlagsEnum.Foo
После:
myValue.HasFlag(MyFlagsEnum.Foo)
XML:
<CustomPatterns>
<Pattern Severity="SUGGESTION">
<Comment>Can condense using 'Enum.HasFlag' method</Comment>
<ReplaceComment>Replace bit matching with 'Enum.HasFlag'</ReplaceComment>
<ReplacePattern>$myValue$.HasFlag($target$)</ReplacePattern>
<SearchPattern><![CDATA[($myValue$ & $target$) == $target$]]></SearchPattern>
<Params />
<Placeholders>
<ExpressionPlaceholder Name="myValue" ExpressionType="System.Enum" ExactType="False" />
<ExpressionPlaceholder Name="target" ExpressionType="System.Enum" ExactType="False" />
</Placeholders>
</Pattern>
</CustomPatterns>
JetBrains предлагает образец каталога шаблонов для структурного поиска и замены для загрузки, содержащий 17 шаблонов:
.NET 4 вводит метод System.Diagnostics.Stopwatch.Restart()
, который может привести в порядок ваш код.
До:
stopwatch.Reset();
stopwatch.Start();
После:
stopwatch.Restart();
XML:
<CustomPatterns>
<Pattern Severity="SUGGESTION">
<Comment>Use Restart method for System.Diagnostics.Stopwatch</Comment>
<ReplaceComment>Use Restart method for System.Diagnostics.Stopwatch</ReplaceComment>
<ReplacePattern>$stopwatch$.Restart();</ReplacePattern>
<SearchPattern><![CDATA[$stopwatch$.Reset();
$stopwatch$.Start();]]></SearchPattern>
<Params />
<Placeholders>
<ExpressionPlaceholder Name="stopwatch" ExpressionType="System.Diagnostics.Stopwatch" ExactType="True" />
</Placeholders>
</Pattern>
</CustomPatterns>