Skip to content

Commit d3c2865

Browse files
committed
ранние вовзвраты. Пример про охранника
1 parent 8437bb2 commit d3c2865

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

lang_c/6/2__operator_if_else/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ int main(void)
279279
}
280280
```
281281
282-
Здесь мы проверяем количество значений, считанных функцией `scanf`, и если оно не равно двум, то выводим сообщение об ошибке. Затем сразу вызываем инструкцию `return -1;`, чтобы завершить выполнение функции `main`, а значит и выполнение всей программы. При этом, чтобы сообщить операционной системе, что программа завершилась из-за ошибки, мы возвращаем значение `-1`, а не `0` как мы обычно делаем. Такой подход называется =ранние return'ы (early returns)=. Его суть заключается в том, чтобы проверить необходимые условия сразу в начале программы/функции и если они не выполнены, то завершить программу/функцию.
282+
Здесь мы проверяем количество значений, считанных функцией `scanf`, и если оно не равно двум, то выводим сообщение об ошибке. Затем сразу вызываем инструкцию `return -1;`, чтобы завершить выполнение функции `main`, а значит и выполнение всей программы. При этом, чтобы сообщить операционной системе, что программа завершилась из-за ошибки, мы возвращаем значение `-1`, а не `0` как мы обычно делаем. Такой подход называется =ранние возраты (early returns)=. Его суть заключается в том, чтобы проверить необходимые условия сразу в начале программы/функции и если они не выполнены, то завершить программу/функцию. Здесь инструкция `if` выступает как бы в роли охранника на входе в здание. Если ему что-то не нравится (условия не выполняются), он тебя сразу выпроваживает.
283283
284284
В программе sum2 v.1.2 (Листинг 6) основные вычисления были спрятаны где-то внутри инструкции `if`, что не очень наглядно. Программа sum2 v.2.0 (Листинг 10) выглядит более изящно и логично. В ней сразу видны три основных блока:
285285

0 commit comments

Comments
 (0)