PHP Utilizando Operador Ternário para Executar Ações IF / ELSE

$high_consuming_resources = true;
($high_consuming_resources)
  ? set_time_limit(0)
  : set_time_limit(30);

$high_consuming_resources = false;
($high_consuming_resources)
  ? init_set('memory_limit', '2048M')
  : null;

Depois que a gente começa a trabalhar com Clean Code umas das tendências é tentar ao máximo eliminar os famigerados if / else com brackets.

Então estes dias eu estava adicionando novas features em uma classe e conforme o escopo eu poderia ou não executar um processo de acordo com os parâmetros recebidos, mas não queria dar o braço a torcer… então decidi experimentar algo diferente.

Usando um operador ternário eu simplesmente desprezei a variável para armazenar o resultado da operação. Como as minhas operações eram VOID elas não produziam nenhum retorno mesmo.

Depois foi simples, na parte TRUE / FALSE do ternário coloquei as instruções para executar as operações desejadas. Tem que ser uma operação única, ou então uma operação em cadeia tipo um objeto que retorna self e permite encadear as operações.

Caso você tenha duas ou mais operações você pode encapsulá-las em um novo método e então no ternário teria uma única operação a ser invocada.

Também surgiu a situação onde eu tinha uma operação somente para a parte TRUE do ternário. Então a solução mais lógica foi apenas adicionar um NULL na parte FALSE fechando o ciclo do operador.

O mesmo código acima poderia ser escrito desta forma com o tradicional IF / ELSE…

$high_consuming_resources = true;
if ($high_consuming_resources) {
    set_time_limit(0);
} else {
    set_time_limit(30);
}

$high_consuming_resources = false;
if ($high_consuming_resources) {
    init_set('memory_limit', '2048M');
}

E aí? Qual destas formas você acha mais legível ou mais agradável para debugar mentalmente?

Confesso que acabei me acostumando com o ternário, na hora de ler o código parece que flui melhor o raciocínio.

Sei lá, pode ser só preferência pessoal mesmo!

Deixe um comentário