Autumn SALE

Видалення керуючого флагу

Також відомий як: Remove Control Flag

Проблема

У вас є булева змінна, яка грає роль керуючого флагу для декількох булевих виразів.

Рішення

Використайте break, continue і return замість цієї змінної.

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

Керуючи флаги прийшли до нас з тих «бородатих» днів, коли гарним стилем програмування вважалося мати у функції одну вхідну точку (рядок оголошення функції) і одну вихідну точку (у самому кінці функції).

У сучасних мовах програмування цей підхід застарів, оскільки в нас з’явилися спеціальні оператори для керування ходом програми в циклах і інших складних конструкціях:

  • break: зупиняє виконання циклу;

  • continue: зупиняє виконання поточного кола циклу і переходить до перевірки умови циклу і наступної ітерації;

  • return: зупиняє виконання усієї функції і повертає її результат, якщо він поданий в цьому операторові.

Переваги

  • Код з управляючим флагом дуже часто виходить значно заплутанішим, ніж при використанні операторів керування виконанням.

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

  1. Знайдіть, де керюючому флагу программа надає якесь значення, завдяки якому виконується виход з циклу або поточної ітерації.

  2. Замініть його на break, якщо це вихід з циклу або continue, якщо це вихід з ітерації.

  3. Приберіть весь інший код і перевірки, пов’язані з керуючим флагом.