Я предпочитаю версию без брекетов, где это возможно.
Следующее объяснение длинновато. Пожалуйста, потерпите меня. Я дам вескую причину для меня, чтобы предпочесть этот стиль. Я также объясню, почему я думаю, что обычный контраргумент не имеет места.
(Почти) пустые строки - пустая трата
Причина этого заключается в том, что закрывающая скобка требует дополнительной строки кода - как и вводная скобка, в зависимости от стиля. 1
Это большое дело? Внешне нет. В конце концов, большинство людей также помещают пустые строки в свой код для разделения логически немного независимых блоков, что значительно улучшает читабельность.
Однако я ненавижу тратить вертикальное пространство. Современные мониторы на самом деле имеют достаточно горизонтального пространства. Но вертикальное пространство все еще очень и очень ограничено (если только вы не используете монитор, повернутый вертикально, что не редкость). Это ограниченное вертикальное пространство является проблемой: общепризнанно, что отдельные методы должны быть как можно короче, и что соответствующие скобки (или другие разделители блоков) должны иметь разность не более высоты экрана, чтобы вы могли видеть весь блок без прокрутки.
Это фундаментальная проблема: если вы больше не видите весь блок на экране, его становится сложно понять.
Как следствие, я ненавижу лишние пустые строки. Там, где отдельные пустые строки имеют решающее значение для разграничения независимых блоков (просто посмотрите на визуальный вид этого текста), последовательные пустые строки - очень плохой стиль в моей книге (и по моему опыту они обычно являются признаком начинающих программистов).
Точно так же должны быть линии, которые просто содержат скобку и которые могут быть сэкономлены. Блок с одним оператором, который ограничен фигурными скобками, тратит одну-две строки. Это заметно только при 50-ти строчках на высоту экрана.
Пропуск скобок может не навредить
Есть только один аргумент против пропуска фигурных скобок: кто-то позже добавит еще один оператор к рассматриваемому блоку и забудет добавить фигурные скобки, тем самым непреднамеренно изменив семантику кода.
Это действительно было бы большим делом.
Но по моему опыту это не так. Я неаккуратный программист; и все же, за мой десятилетний опыт программирования я могу честно сказать, что ни разу не забыл добавить фигурные скобки при добавлении дополнительного оператора в одиночный блок.
Я даже считаю неправдоподобным, что это должно быть распространенной ошибкой: блоки являются фундаментальной частью программирования. Разрешение на уровне блоков и определение объема - это автоматический укоренившийся умственный процесс для программистов. Мозг просто делает это (в противном случае рассуждения о программировании были бы намного сложнее). Существует никакого дополнительные умственные усилия должны помнить , положить фигурные скобки: программист также помнит , чтобы отступы правильно вновь добавленное заявление, в конце концов; поэтому программист уже мысленно обработал, что задействован блок.
Теперь, я не говорю , что опуская скобки не вызывает ошибок. Я говорю, что у нас нет доказательств, так или иначе. Мы просто не знаем , причиняет ли это вред.
Поэтому до тех пор, пока кто-то не сможет показать мне достоверные данные, собранные в результате научных экспериментов, демонстрирующие, что это действительно проблема на практике, эта теория остается « просто историей »: очень убедительной гипотезой, которая никогда не подвергалась проверке, и что должен не использоваться в качестве аргумента.
1 Эта проблема иногда решается путем помещения всего, включая скобки, в одну строку:
if (condition)
{ do_something(); }
Однако я считаю, что можно с уверенностью сказать, что большинство людей это презирает. Кроме того, у него будут те же проблемы, что и у варианта без фигурных скобок, так что это худший из обоих миров.