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

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

Проблема

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

Решение

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

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

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

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

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

Достоинства

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

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

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

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

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

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

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

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

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