Ведётся горячая дискуссия о однострочных операторах и о том, должны ли они иметь фигурные скобки или нет.
В C++, C#, Java и Javascript однострочный оператор без фигурных скобок является допустимым синтаксисом. Некоторые используют эту возможность, а другие — нет.
Например
if(ifTrue)
MowTheLawn();
for(var index; index > 10; index++)
ChopWood();
foreach(var dollar in money)
BuyLollipop();
while(untilTheEnd)
Read();
Аргументы против однострочных фигурных скобок
Аргументы против фигурных скобок — это более лаконичный синтаксис, меньше символов для ввода и это допустимый синтаксис. Почему бы не воспользоваться этой возможностью?
Аргументы за однострочными фигурными скобками
Аргументы за фигурные скобки — это согласованность, меньше ошибок и более естественное восприятие при чтении кода.
В статье, написанной Джоном Абрамсом под названием Single-line ‘if’ statements, Джон объясняет, как дефект в реализации TLS компании Apple был введён в результате использования однострочного оператора if без фигурных скобок. Джон также говорит, что хотя опускание фигурных скобок в однострочных операторах более лаконично, предотвращение дефектов важнее, чем лаконичность.
Джон предлагает компромисс — разрешить однострочные операторы, если они действительно находятся на одной строке:
if(ifTrue) MowTheLawn();
Я согласен с мнением Джона: опускание фигурных скобок в однострочных операторах не стоит того преимущества, которое оно предоставляет. Это заставляет инженера-программиста рассматривать два варианта допустимого синтаксиса. Это может показаться не таким уж плохим, но это утомительно принимать это решение каждый раз, когда вы встречаете оператор if. Следующий эффект заключается в том, что инженер экономит несколько нажатий клавиш и перекладывает бремя на будущих читателей для разбора их кода.
Для инженеров-программистов C# компания Microsoft заняла позицию в своих соглашениях по кодированию, которые требуют использования фигурных скобок.
Когда мы используем фигурные скобки во всех случаях независимо от количества строк, становится очень ясно, что находится в области видимости, а что — нет. Это делает код менее подверженным ошибкам и более согласованным. Хотя некоторые могут оспорить эту точку зрения, я считаю, что такой код легче читать.
Автор: Chuck Conway — инженер AI с почти 30-летним опытом разработки программного обеспечения. Он создает практические системы AI — конвейеры контента, агенты инфраструктуры и инструменты, которые решают реальные проблемы — и делится тем, что он узнает на этом пути. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube и на SubStack.