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