DEV Community

loading...

Quando usar o if?

Tiago Oliveira
Originally published at Medium on ・2 min read

Como desafio a mim mesmo, decidi começar com um tema simples.

Sendo assim, quando usar o if?

Primeiramente, vamos contextualizar. O if é uma condicional que determina que certo trecho de código só poderá ser executado caso as condições (1 ou varias condições), sejam verdadeiras.

Bom e velho if

No cenário em que determinado código só pode ser executado caso a condição seja verdadeira, o if resolve muito bem.

Mas, temos alguns cenários onde queremos atribuir determinado valor a uma variável dependendo do valor de uma condicional. Será que compensa usar o if? Por exemplo, eu tenho uma variável fruta, mas que tipo ela vai ser, depende se essa fruta tem ou não caroço. Com if ficaria algo assim:

Condicional usando if-else para atribuir valor

Vê que a lógica funciona, mas será que essa é a melhor forma? Não é errado, mas visualmente fica uma grande quantidade de código para uma atribuição simples, neste caso, que é bem comum, talvez poderíamos usar um ternário:

Ternário condicional

A legibilidade fica clara, a atribuição por ser simples fica fácil, e economizamos muitas linhas de código.

Um outro cenário que encontramos muito é quando temos condições demais que determinados fluxos podem ter para seguir de acordo com as condições apresentadas, os problemas que geramos com isso são dois, o efeito Ryu e o efeito Inteligência Artificial.

Efeito Ryu

Efeito Inteligência Artificial

Brincadeiras a parte, essas condicionais encadeadas de if-else é bem comum em muitos códigos, seja porque era “apenas uma excessão” ou “apenas para mostrar para a PO depois eu faço certo”. A questão é que o uso do if acaba sendo usado além do que deveria, gerando o que chamamos de anti padrão, encapsulamento não explorado. Vulgo, bad smell. Para alguns casos, uma boa solução é o uso do switch:

Switch-case

A leitura fica mais clara, declarativa, e a manutenção bem mais ágil já que temos o enum deixando bem claro a declaração a qual aquela condicional deve atender. E, se no futuro precisar adicionar mais cenário, precisa apenas mapear um novo estado. Claro, que de acordo com os cenário vai crescendo, o uso do switch passa a ser abusivo e uma nova solução deve ser pensada, como por exemplo, usar um design-pattern como Builder, ou um Factory, aí vai de acordo com a necessidade.

Por hora, a intenção era falar do uso do if.

Qualquer sugestão de melhoria ou correção, deixa nos comentários.

Até logo!

Discussion (0)