Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Vou deixar um exemplo básico aqui, porém não estou conseguindo raciocinar qual padrão seria melhor para esse exemplo.
Digamos que eu preciso retornar uma mensagem de acordo com o valor do calculo
function mensagemMassaMagra($sexo, $idade, $valor) {
if ($idade >= 18) {
if ($sexo == "feminino") {
if ($idade <= 39) {
if ($valor < 24.3) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 30.3) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 35.3) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35.4) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 59) {
if ($valor < 24.1) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 30.1) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 35.1) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35.2) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 79) {
if ($valor < 23.9) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 29.9) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 34.9) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 35) {
$this->setMensagem_massamagra("Muito alto");
}
}
} elseif ($sexo == "masculino") {
if ($idade <= 39) {
if ($valor < 33.3) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 39.3) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 44.0) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 44.1) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 59) {
if ($valor < 33.1) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 39.1) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 43.8) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 43.9) {
$this->setMensagem_massamagra("Muito alto");
}
} elseif ($idade <= 79) {
if ($valor < 32.9) {
$this->setMensagem_massamagra("Baixo");
} elseif ($valor <= 38.9) {
$this->setMensagem_massamagra("Normal");
} elseif ($valor <= 43.6) {
$this->setMensagem_massamagra("Alto");
} elseif ($valor >= 43.7) {
$this->setMensagem_massamagra("Muito alto");
}
}
}
}
return $this->getMensagem_massamagra();
}
O problema é a quantidade de if. Qual seria a melhor fora de colocar em um desses padrões citados e qual seria o melhor para esse exemplo?
Pensei em usar o Chain Of Responsability de acordo com a idade.Carregando comentários...