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