Logic optimization

Asked

Viewed 73 times

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 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 this way the chain of if and Else gets very extensive. Someone would have an idea to optimize and make it as simple as possible

  • 3

    Have you tried using the ternary operator?

  • This is not even an understandable algorithm. This can be a requirement without details.

2 answers

4

It is possible to optimize as follows, to detect if the value is 'outside' of 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, because:

  • or the alert has already been sent.
  • or the value is in the normal range between maximum and minimum.
  • or the value is below the minimum or above the maximum but the alert was not 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 parenthesis by grouping the track comparisons the result of it is connected by one per E logical the second part only denies the value of $alerta in that case may be translated as if(false && true) so the result is false.

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;
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.