Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости Школы Программирования - Оформление конструкции 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 {
<операторы>
}
Так делают во многих крупных организациях и открытых сообществах. Конечно, этот способ тоже верный. Постановка открывающейся фигурной скобки - единственное различие оформлений. Выбретите для себя один из двух способов и придерживайтесь его по крайней мере в рамках одной программы. В следующих статьях цикла я не буду возвращаться к этому способу, так что если вы выбрали его, делайте поправку самостоятельно.

В избранное