Новости Школы Программирования - Оформление конструкции if-else
В статье вы найдете правила оформления конструкции if-else. Отдельно мы рассмотрим случай, когда блок состоит из одного оператора. Также вы узнаете, как правильно оформлять вложенные if-else-if.
Общие правила
Общий вид конструкции:
if (<условие>) { <операторы> } else { <операторы> }
Пример:
if (x > 0) { y = f(x); x++; } else { y = f(-x); x--; }
Теперь обратим внимание на каждую мелочь:
1.1: в первой строке: слово if, условие и больше ничего
1.2: между if и открывающейся круглой скобкой стоит пробел
1.3: на следующей строке: фигурная скобка с тем же отступом, что и if
1.4: со следующей строки: блок операторов, сдвинут вправо на одну табуляцию относительно if
1.5: на следующей строке после блока операторов: закрывающаяся фигурная скобка с тем же отсупом, что и if
1.6: на следующей строке: else c тем же отступом, что и if
1.7: на следующей строке: фигурная скобка с тем же отступом, что и if
1.8: со следующей строки: блок операторов, сдвинут вправо на одну табуляцию относительно if
1.9: на следующей строке после блока операторов: закрывающаяся фигурная скобка с тем же отсупом, что и if
Комментарии отмечены двойной нумерацией, где первая цифра означает номер темы, а вторая - номер правила. Тема оформления конструкций if-else будет первой в нашем каталоге.
Если части else нет, то правила 1.6 - 1.9, конечно, не актуальны.
Когда блок состоит из одного оператора
Теперь рассмотрим случай, когда оба блока состоит из одного оператора. Здесь следует опустить фигурные скобки.
Вместо
if (x > 0) { y = f(x); } else { y = f(-x); }
можно писать
if (x > 0) y = f(x); else y = f(-x);
Но если хотя бы один блок состоит более, чем из одного оператора, следует оба заключить в фигурные скобки.
Так неправильно:
if (x > 0) { y = f(x); x++; } else y = f(-x);
Так правильно:
if (x > 0) { y = f(x); x++; } else { y = f(-x); }
Итак, еще два правила:
1.10: когда оба блока состоят из одного оператора (или же если блока else нет вовсе), фигурные скобки можно опустить
1.11: если хотя бы один блок состоит более, чем из одного оператора, следует оба заключить в фигурные скобки.
if-else-if
Часто требуется разветвлять код более, чем на два пути. Рассмотрим пример вывода на экран текста "ноль", "положительное число" или "отрицательное число", в зависимости от значения этого самого числа.
if (x == 0) { printf("ноль"); } else { if (x > 0) printf("положительное число"); else printf("отрицательное число"); }
Часть else включает только один оператор, а значит, мы можем обойтись без фигурных скобок. Однако так же мы можем и сократить вложенность конструкции, если запишем ее следующим образом:
if (x == 0) printf("ноль"); else if (x > 0) printf("положительное число"); else printf("отрицательное число");
На одном уровне мы можем проверять сколь угодно много условий. Такой код выглядит компактнее и легче читается.
И последнее правило:
1.12: Когда часть else состоит из одного оператора if, следует преобразовать конструкцию к виду if-else-if
Оговорка
Часто можно встретить код, где открывающаяся фигурная скобка ставится в конце строки:
if (<условие>) { <операторы> } else { <операторы> }
Так делают во многих крупных организациях и открытых сообществах. Конечно, этот способ тоже верный. Постановка открывающейся фигурной скобки - единственное различие оформлений. Выбретите для себя один из двух способов и придерживайтесь его по крайней мере в рамках одной программы.
В следующих статьях цикла я не буду возвращаться к этому способу, так что если вы выбрали его, делайте поправку самостоятельно.