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