Также известен как Remove Control Flag

Рефакторинг Удаление управляющего флага

Проблема

У вас есть булевская переменная, которая играет роль управляющего флага для нескольких булевских выражений.

Решение

Используйте `break`, `continue` и `return` вместо этой переменной.

Причины рефакторинга

Управляющие флаги пришли к нам из тех «бородатых» дней, когда хорошим стилем программирования считалось иметь в функции одну входную точку (строку объявления функции) и одну выходную точку (в самом конце функции).

В современных языках программирования этот подход устарел, т.к. у нас появились специальные операторы для управления ходом программы в циклах и других сложных конструкциях:

  • break: останавливает выполнение цикла;
  • continue: останавливает выполнение текущего витка цикла и переходит к проверке условия цикла и следующей итерации;
  • return: останавливает выполнение всей функции и возвращает её результат, если он подан в этом операторе.

Достоинства

  • Код с управляющим флагом зачастую получается значительно более запутанным, чем при использовании операторов управления выполнением.

Порядок рефакторинга

  1. Найдите присваивание значения управляющему флагу, которое приводит к выходу из цикла или текущей итерации.

  2. Замените его на break, если это выход из цикла, или continue, если это выход из итерации, или return, если нужно вернуть это значение из функции.

  3. Уберите весь остальной код и проверки, связанные с управляющим флагом.

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш новый интерактивный курс по рефакторингу. Он более информативный и гораздо более интересный, чем банальный текст.

Узнать больше...

Живой пример

Первый раз здесь? Ничего страшного!

У нас здесь всё просто – интерактивный пример очень похож на видео (но выглядит гораздо круче).

  1. После начала проигрывания, вам показываются разнообразные подсказки и сообщения. Вы продвигаетесь дальше, кликая на них.
  2. Вы можете перематывать шаги, используя стрелки слева.
  3. Кроме того, вы можете посмотреть разницу между первоначальным и получившимся кодом, нажав кнопку с глазом ().
  4. Кнопка компиляции () позвоялет проверить текущий код на наличие ошибок.