私はこれらの2つのルールの違いを理解しようとしていますか?ReSharper `MergeSequentialChecks`と` MergeSequentialChecksWhenPossible`の違いは何ですか?
MergeSequentialChecks
MergeSequentialChecksWhenPossible
ドキュメントは、第1については何も言いません。 https://www.jetbrains.com/help/resharper/2016.1/MergeSequentialChecks.html
それは私にとって何の意味ですか?WhenPossible
?
ReSharperが最初のルールを適用し、私の逐次チェックをマージすることを提案している場合は、確かに可能です。どのようにそれが可能ではない可能性がありますか?
以下は、確認するコード例です。
public class Person
{
public string Name { get; set; }
public IList<Person> Descendants { get; set; }
}
public static class TestReSharper
{
// Here `MergeSequentialChecks` rule is triggered for both `&&` operands.
public static bool MergeSequentialChecks(Person person)
{
return person != null && person.Descendants != null && person.Descendants.FirstOrDefault() != null;
}
// Here `MergeSequentialChecksWhenPossible` rule is triggered.
public static bool MergeSequentialChecksWhenPossible1(Person person)
{
return person != null && person.Descendants.Any();
}
// Here `MergeSequentialChecksWhenPossible` rule is triggered.
public static bool MergeSequentialChecksWhenPossible2(Person person)
{
return person.Descendants != null && person.Descendants.Any();
}
}
"Merge Sequential Checks"リファクタリングは多くの場合、式のロジックを逆にして壊れていることに注意してください。 –