Стиль отвечает семантике
Какой стиль лучше?
bool abc;
if (Foo())
abc = Bar();
else
abc = false;
или
bool abc = Foo() && Bar();
?
Для меня выбор сводится к ответу на вопрос: «метода Bar полезен только ради получения возвращаемого значения или также и для выполнения некоторых побочных эффектов?» Выбор стиля должен в основном основываться на желании ясной передачи семантики участка программы.
Загадочные имена усложняют, а не упрощают этот выбор. Предположим, что на самом деле выбор был бы между следующими вариантами:
bool loginSuccessful;
if (NetworkAvailable())
loginSuccessful= LogUserOn();
else
loginSuccessful= false;
и
bool loginSuccessful= NetworkAvailable() && LogUserOn();
В этом случае я всегда выберу первый вариант, поскольку я хочу, чтобы метод LogUserOn был отдельным выражением. Выражение подчеркивает «У меня есть полезные побочные эффекты». Выражение подчеркивает порядок выполнения и предоставляет удобные места для установки точек останова.
Однако если выбор будет между:
bool canUseCloud;
if (NetworkAvailable())
canUseCloud = UserHasFreeSpaceInCloud();
else
canUseCloud = false;
и
bool canUseCloud = NetworkAvailable() && UserHasFreeSpaceInCloud();
Я всегда выберу второй вариант, поскольку в этом случае использование оператора && соответствует принятым идиомам безопасного вычисления значения.