Tôi đang cố gắng tìm ra sự khác biệt giữa hai quy tắc này là gì?Sự khác nhau giữa ReSharper `MergeSequentialChecks` và` MergeSequentialChecksWhenPossible` là gì?
MergeSequentialChecks
MergeSequentialChecksWhenPossible
Các tài liệu không nói bất cứ điều gì về một giây. https://www.jetbrains.com/help/resharper/2016.1/MergeSequentialChecks.html
Và điều đó không có ý nghĩa rõ ràng đối với tôi, nghĩa là gì WhenPossible
?
Nếu ReSharper đề xuất áp dụng quy tắc đầu tiên và hợp nhất các kiểm tra tuần tự của tôi, thì thực sự IS có thể thực hiện được. Làm thế nào nó có thể là không thể?
Đây là ví dụ về mã để kiểm tra.
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();
}
}
lưu ý rằng quá trình tái cấu trúc "Hợp nhất tuần tự kiểm tra" được chia nhỏ trong nhiều trường hợp, đảo ngược logic của biểu thức của bạn. –