Logic optimization [closed]

0

I have the following logic that I need to optimize using PHP

Parâmetros:
máximo
mínimo
alerta

Se ultrapassar o nível máximo enviar um alerta
    Se alerta já tiver sido enviado não enviar nada
Se o nível voltar ao normal enviar alerta

The same behavior with the minimum:

Se ultrapassar o nível mínimo enviar um alerta
    Se alerta já tiver sido enviado não enviar nada
Se o nível voltar ao normal enviar alerta

The problem is that in this way the if and else string gets too long. Would someone have an idea to optimize and make it as simple as possible

    
asked by anonymous 07.12.2016 / 18:42

2 answers

4

It is possible to optimize as follows, to detect if the value is 'outside' the range (greater than the maximum or less than the minimum) and if the alert has already been sent, in this case it does nothing, since:

  • or the alert has already been sent.
  • or the value is in the range of 'normal' from the maximum to the minimum.
  • or the value is below the minimum or above the maximum but the alert has not been sent.

See the code below:

$max = 30;
$min = 5;
$alerta = false;
$valor = 6;

if( ($valor < $min || $valor > $max) && !$alerta) {
    echo 'enviar alerta';
    $alerta = true;
}else{
    echo 'alerta já enviado ou valor normal';
}

Example:

        6       5        6      30        false
if( ($valor < $min || $valor > $max) && !$alerta)
          false            false          true

See parentheses by grouping the range comparisons, the result of which is connected by a per% logical_confirm, the second part only negates the value of E in which case it can be translated as $alerta soon the result is false

    
07.12.2016 / 19:03
1
$nivel = ; // Nível 
$alerta = false; // Não foi enviado nenhum alerta
$msg = "";

if ($nivel == 5) { // Nível máximo é 5
  $msg = (!$alerta) ? "alerta - nível em seu estado máximo": "";
}
if ($nivel <= 3) { // Nível normal é abaixo ou igual a 3
 $msg = "alerta - nível em seu estado normal";
}

if ($msg != "") {
    echo $msg;
    $alerta = true;
}
    
07.12.2016 / 19:06