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

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

Проблема

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

Рішення

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

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

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

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

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

Переваги

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

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

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

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

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

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.