Поток управления
Оригинальное название: control flow
Коротко
Порядок, в котором выполняются команды программы: подряд, с ветвлением по условию, по кругу в цикле, с переходом в функцию и возвратом из неё.
Что такое «Поток управления»
По умолчанию код выполняется сверху вниз, строка за строкой. Всё интересное начинается, когда этот порядок нарушается: условие отправляет выполнение в одну из веток, цикл возвращает его назад, вызов функции уводит в другое место и потом возвращает обратно, исключение выбрасывает сразу через несколько уровней вызовов. Совокупность этих переходов и называют потоком управления. Его можно нарисовать как граф: блоки кода — вершины, возможные переходы — стрелки. Так поступают компиляторы и анализаторы, когда ищут недостижимый код или пути, на которых переменная остаётся пустой.
Из чего складывается
- Последовательность — обычные команды подряд.
- Ветвление:
if,switch,match, тернарный оператор. - Повторение:
for,foreach,while, а также рекурсия. - Переходы:
return,break,continue, исключения. - Асинхронность: в JavaScript колбэк или
awaitпродолжает выполнение позже, когда придёт ответ сервера.
Пример: ранний выход вместо вложенности
Один и тот же поток управления можно записать запутанно или ясно. Вложенные условия заставляют держать в голове несколько уровней:
function can_checkout( $cart, $user ) {
if ( ! $user ) {
return false;
}
if ( $cart->is_empty() ) {
return false;
}
return $cart->total() >= MIN_ORDER;
}
Каждая проверка с ранним возвратом отсекает один неудачный путь, и к последней строке читатель приходит, уже зная, что пользователь есть и корзина не пуста. Такой приём называют защитными условиями.
Как поток управления помогает при отладке
Когда программа ведёт себя странно, первый вопрос — а дошло ли выполнение до нужной строки. Пошаговый отладчик показывает фактический путь: в какую ветку свернул код, сколько раз прошёл цикл, откуда пришло исключение. Без отладчика тот же ответ дают отметки в журнале на входе в каждую ветку. Подробнее о методах — в статье про отладку. Запутанный поток управления с флагами, которые меняются в пяти местах, — частая причина ошибок, которые проявляются только при редком сочетании условий.

