Удаление управляющего флага
Проблема
У вас есть булевская переменная, которая играет роль управляющего флага для нескольких булевских выражений.
Решение
Используйте break
, continue
и return
вместо этой переменной.
Причины рефакторинга
Управляющие флаги пришли к нам из тех «бородатых» дней, когда хорошим стилем программирования считалось иметь в функции одну входную точку (строку объявления функции) и одну выходную точку (в самом конце функции).
В современных языках программирования этот подход устарел, так как у нас появились специальные операторы для управления ходом программы в циклах и других сложных конструкциях:
-
break
: останавливает выполнение цикла; -
continue
: останавливает выполнение текущего витка цикла и переходит к проверке условия цикла и следующей итерации; -
return
: останавливает выполнение всей функции и возвращает её результат, если он подан в этом операторе.
Достоинства
- Код с управляющим флагом зачастую получается значительно более запутанным, чем при использовании операторов управления выполнением.
Порядок рефакторинга
-
Найдите присваивание значения управляющему флагу, которое приводит к выходу из цикла или текущей итерации.
-
Замените его на
break
, если это выход из цикла, илиcontinue
, если это выход из итерации, илиreturn
, если нужно вернуть это значение из функции. -
Уберите весь остальной код и проверки, связанные с управляющим флагом.