Блоки – фигурные скобки / не фигурные скобки?

Когда я начал развиваться, я следил за учебниками, которые всегда использовали {} (фигурные скобки), чтобы заключать блоки. Однако, когда я начал смотреть на код других людей (например, на GitHub или просто больше кода в целом, чем то, что будет показано в базовом учебнике), однако я также видел операторы блоков, не включенные, например, в {} ;

 if($var < 15) $string = 'Hello, Jimmy!'; elseif($var >= 15) $string = 'Hello, Anne!'; 

Такой же как

 if($var < 15) { $string = 'Hello, Jimmy!'; } elseif($var >= 15) { $string = 'Hello, Anne!'; } 

Я никогда не использовал блоки, не заключенные в {} , но я использовал их сегодня, и я начинаю видеть эффективность этого (он выглядит намного чище, так как я часто нахожу свои функции, пронизанные {} от циклы, условные обозначения и т. д.

То, о чем я прошу;

а) существуют ли какие-либо ограничения на блоки без фигурных скобок (я заметил, что мой IDE отступил от отступа после ввода одной строки и вернулся после условия if() ?

б) существуют ли какие-либо лучшие методы, если не использовать {} ?

Любые ответы, в частности те, которые включены. background / docs на конвенции по фигурному использованию фигурных скобок для блоков, а не на их использовании, было бы очень полезно, так как я действительно хотел бы понять использование фигурных скобок :)!

Solutions Collecting From Web of "Блоки – фигурные скобки / не фигурные скобки?"

Вы можете опустить {} для одной строки:

 if(something) do something else 

однако вы не можете его пропустить и продолжать так:

 if(something) do one thing do another do some more 

В приведенном выше примере будет только 1 условный элемент («сделайте одно»). Остальные просто бежали безоговорочно.

И да, я видел неряшливый метод раньше, чем без {} , я сам предпочитаю использовать {} чтобы отделить логику, и ее легче читать.

Поэтому придерживайтесь {} кода.

Лучшая практика – всегда использовать их. Слишком легко другому разработчику прийти и добавить строку кода или удалить строку кода и полностью разбить условное непреднамеренно.

В основном это зависит от стиля, к которому вы привыкли. http://en.wikipedia.org/wiki/Indent_style

 if (some_error) something(); //Will be executed only when some_error==true somethingelse(); //Will always be executed. 

Если вы не используете фигурные скобки, только следующая строка является частью оператора if.

 if (some_error) err1 = "bad1"; errorno=3; 

Конечно, в приведенном выше примере errno всегда будет 3 независимо от того, истинна или нет some_error.

То же самое для петель

 for (i = 0; i < 10; i++) doSomething (i); 

Таким образом, фигурная скобка отмечает, где она начинается и где она заканчивается. Не использовать их означает, что на следующую строку будет влиять оператор if, for, while, ….

Кроме того, фигурные скобки можно использовать для обозначения блока кода. Когда я код на C ++, я всегда отмечаю начало и конец вызова GL с помощью фигурных скобок.

 glBegin(GL_TRIANGLES); // Drawing Using Triangles { glVertex3f( 0.0f, 1.0f, 0.0f); // Top glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right } glEnd(); 

Таким образом, его легче читать и указывать отсутствующие вызовы glEnd.

Кудрявые фигурные скобки необязательны, если оператор, который будет выполняться после условного или цикла, является только одной строкой:

 //This outputs "hello" $test = 1; if($test == 1) echo "hello"; //This outputs "howdy" $test = 1; if($test == 2) echo "hello"; echo "howdy"; 

Независимо от того, окружаете ли вы однострочные операторы с помощью фигурных скобок, это вопрос личных предпочтений, а также может быть продиктован документом стиля кодирования, если вы работаете над совместным проектом. Лично я никогда не использую их для отдельных операторов и позволяю отступом моего кода показывать, как организован код, но если вы видите мой второй пример выше, это случай, который я видел раньше, когда ошибки вступают. Кодер создает условное выражение с единственная строка, которая будет выполнена на основе этого условия. Затем идет второй кодер и добавляет вторую строку, но забывает добавлять фигурные скобки. Поэтому с этой точки зрения вы могли бы всегда использовать их. Это зависит от ваших индивидуальных обстоятельств.

Вы должны использовать их только в том случае, если над фигурной скобкой имеется более одной строки кода.

 if($var) return true; 

такой же как

 if($var) { return true; } 

Однако, если у вас есть несколько строк, вы должны заключить их в фигурные скобки.

 if($var) { $var += 1; $var2 = $var; return $var2 } 

Лично я прекратил использовать их, когда одна строка кода следовала, потому что вы правы, она выглядит более чистой, особенно если ее все на одной строке, как верхний оператор. Кроме того, ваш код будет более управляемым, если вы сократите инструкции else if и просто используйте return чтобы остановить функцию, если это не удается, и просто продолжайте идти к следующему, if на true. Это может стать действительно беспорядочным, очень быстрым, с большим количеством else if утверждения и ваш отказ от использования коммутатора. Помимо личных предпочтений, если это всего лишь одна строка следующего кода, потеряйте фигурные скобки.

AlienWebguy прав, когда дело доходит до профессионального развития, используйте их в этом случае.