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.

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:

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:

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.


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:

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!
Top comments (0)