---
title: "Удаление управляющего флага"
type: "refactoring-technique"
slug: "remove-control-flag"
url: "http://localhost:3000/ru/remove-control-flag.md"
category: "Упрощение условных выражений"
description: "Проблема: У вас есть булевская переменная, которая играет роль управляющего флага для нескольких булевских выражений. Решение: Используйте break, continue и return вместо этой переменной."
---
# Удаление управляющего флага

> Проблема: У вас есть булевская переменная, которая играет роль управляющего флага для нескольких булевских выражений. Решение: Используйте break, continue и return вместо этой переменной.

## Problem

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

## Solution

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

## Why Refactor

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

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

* `break`: останавливает выполнение цикла;
* `continue`: останавливает выполнение текущего витка цикла и переходит к проверке условия цикла и следующей итерации;
* `return`: останавливает выполнение всей функции и возвращает её результат, если он подан в этом операторе.

## Benefits

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

## How to Refactor

1. Найдите присваивание значения управляющему флагу, которое приводит к выходу из цикла или текущей итерации.
2. Замените его на `break`, если это выход из цикла, или `continue`, если это выход из итерации, или `return`, если нужно вернуть это значение из функции.
3. Уберите весь остальной код и проверки, связанные с управляющим флагом.
