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