$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!