ConstructiCat Logo
CodeBust.
Browse section ▾

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

Problem

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

Solution

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

##Example

##Why Refactor

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

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

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

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

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

##Benefits

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

##How to Refactor

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

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

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