Autumn SALE

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

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

Проблема

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

Решение

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

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

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

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

  • break: останавливает выполнение цикла;

  • continue: останавливает выполнение текущего витка цикла и переходит к проверке условия цикла и следующей итерации;

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

Достоинства

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

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

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

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

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