Применение флагов

Флагом называют переменную, с двумя состояниями, например true/false или 0/1. Если происходит какое-то событие флаг поднимают или наоборот приспускают - т.е. все как в жизни.

Идея применения флагов подобна идее защитной фольги на тюбике зубной пасты. Если Вы купили зубную пасту и на носике есть защитная фольга - Вы можете быть уверены - Вашей пастой никто не пользовался. Если же фольги нет, уже не так важно сколько раз пользовались Вашей зубной пастой - достаточно факта, что кто-то делал это до Вас.

Так и по флагу можно понять - было ли событие?

Давайте возьмем предыдущий код и заоптимизируем его

if ($a<30) { 

    if ($a>10) { 
       $flag =true;

    } else {
       $flag = false
    }
} else {
    $flag =false;
}

if ($flag==true) {
    echo '10<$a<30';
} else {
    echo 'Все плохо';
}

Хм... код стал длиннее. В чем тогда оптимизация!? Даже на этом этапе мы сначала определяем, что произошло, а потом реагируем(выводим на экран). Т.е. наша реакция не дублируется.

Давайте все-таки посмотрим, что можно сделать еще

$flag=false; //будем пессимистами - изначально все плохо
if ($a<30) { 
    if ($a>10) { //т.е. все плохо, если не случится чудо
       $flag =true;  //все хорошо - поднимаем флаг
    }
}

if ($flag) {  // если мы работаем с переменной типа Boolean не имеет смысла еще дополнительно ее сравнивать с true
    echo '10<$a<30';
} else {
    echo 'Все плохо';
}

Код стал немного короче, НО самое главное - он разделен на две части. Первая - это проверки, вторая реакция. Мы можем менять обе эти части независимо друг от друга. Мы можем поменять реакцию, например записывать результат в базу данных, но нам не нужно будет трогать код проверки. Заказчик может поменять условия, по которым нужно отсеивать $a, но это не как не скажется на коде-реакции.

Т.е. подход с флагами дает гибкость нашему коду - свойству, к которому нам нужно стремиться, потому что оно экономит время, силы, а значит и деньги.

results matching ""

    No results matching ""