DEV Community

Tiago Oliveira
Tiago Oliveira

Posted on • Originally published at Medium on

4 5

Quando usar o if?

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!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

AWS GenAI Live!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️