Campanha por um PHP sem o else! Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 2 anos, 8 meses, 2 semanas atrás.

Você sabia que tem muitos programadores que dispensam o uso do else? Sim, tem gente que tem verdadeira fobia a ele e até discrimina quem usa, mas porque?

Na InterConPHP do ano passado (atual PHP Experience 2015, na qual eu vou!) Guilherme Blanco deu uma excelente palestra (Object Calisthenics e Clean Code) e falou sobre o assunto (https://www.youtube.com/watch?v=u-w4eULRrr0), como está chegando o evento novamente me animei em falar sobre esse assunto.

O ideal é que seu código tenha o mínimo de caminhos a percorrer possíveis, isso facilita o entendimento do código e reduz drasticamente a complexabilidade, e se fica menos complexo diminui a chance de erros possíveis. Isso é chamado de Cyclomatic Complexity.

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

Entre outras coisas que podem complicar sua vida está o else. A regra então é negar tudo até o fim, vamos ver um exemplo prático.

class CyclomaticComplexity
{
    public function checkAnyNumber($n)
    {
        if (is_int($n)) {
            if ($n >= 10) {
                return $n;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}

O código acima recebe um valor qualquer que verifica se este é um número, se não for deve retornar false, se for ele novamente verifica se é maior ou igual a 10 e retorna o valor enviado em caso de sucesso, se não retorna false.

Aplicando a técnica de negar tudo teremos:

class CyclomaticComplexity
{
    public function checkAnyNumber($n)
    {
        if (!is_int($n) or $n < 10)
            return false;

        return $n;
    }
}

Note que ele faz a mesma coisa que o primeiro exemplo, porém o código é muito mais enxuto e elegante. A única coisa que fiz foi remover juntar os ifs em um através do operador or e inverter os operadores (negando com ! o primeiro e trocar o >= por <). O return sempre para a execução de um método quando é chamado e isso deve sempre ser usado a seu favor. O Guilherme deu outras dicas na palestra (vou deixar ai em baixo) e tem outro exemplo sobre o "Não uso do else". E voce? Posta um exemplo seu sobre legibilidade no gist.github.com e manda o link ai nos comentários. Será que podemos aposentar o else de vez no PHP?

Para ir direto ao assunto deste tutorial vá até 15:06.

https://youtu.be/u-w4eULRrr0?t=15m6s


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!