Предположим, у меня есть два метода bool Foo()
и bool Bar()
. Что из следующего более читабельно?
if(Foo())
{
SomeProperty = Bar();
}
else
{
SomeProperty = false;
}
или
SomeProperty = Foo() && Bar();
С одной стороны, я считаю короткое замыкание &&
полезной функцией, а второй пример кода намного короче. С другой стороны, я не уверен, что люди обычно привыкли видеть &&
вне условного утверждения, поэтому мне интересно, не привел бы ли это к некоторому когнитивному диссонансу, который сделает первый образец лучшим вариантом.
Что вы думаете? Есть ли другие факторы, которые влияют на решение? Например, если выражение &&
длиннее, чем одна строка, которая может уместиться на экране, я должен предпочесть первое?
Пояснения после ответа:
Несколько вещей, которые я должен был включить в первоначальный вопрос, который подняли ответы.
Bar()
может быть дороже, чем Foo()
, но ни у одного метода не должно быть побочных эффектов.
- Оба метода названы более правильно, не так, как в этом примере.
Foo()
сводится к чему-то вроде CurrentUserAllowedToDoX()
и Bar()
больше похоже на XCanBeDone()