Casos da vida real – #2 | Ordem das condições no IF

Fala galera! Tudo certo?

Esse caso é bem simples, porém bastante rotineiro, vocês já se atentaram na ordem que colocam as condições em seus IFs? Pode ser que consigam ganhar ou perder performance com isso, bora ver?!

Na situação em questão, precisaríamos verificar se:

  • O cliente está ativo, ou
  • A última compra que ele fez foi de mais de R$ 10.000,00

Pra ficar bem didático,

Havia uma classe chamada “Cliente” que era basicamente assim:

e a classe que verifica isso estava mais ou menos assim:

Estava funcionando? Sim!

Mas não era a melhor maneira, e já vou explicar o motivo.

Verifiquem que temos uma condição OU ( || ) dentro do IF, certo? Ou seja, se qualquer uma das condições for igual a VERDADEIRO, o código dentro do bloco irá executar. Então se o cliente estiver ativo ou se a última compra for maior que R$ 10.000,00 o código dentro do bloco IF irá executar.

Quando temos uma condição OU ( || ) dentro de um IF, as verificações são feitas em ordem, e quando uma das verificações retorna VERDADEIRO, o restante das verificações NÃO é executada.

Nesse caso, a primeira verificação é a das compras, mas reparem que essa verificação é um método, que faz uso do banco de dados e de requisições para APIs externas, enquanto a segunda verificação é somente se um atributo da classe que já foi instanciada e utilizada anteriormente é VERDADEIRO.

Pensem, o que é mais custoso? Verificar se um atributo é VERDADEIRO ou fazer requisições de API e banco de dados?

E se o atributo “Ativo” for igual a VERDADEIRO, nós sempre vamos fazer um trabalhão desnecessário.

O ajuste nesse caso, é só inverter a verificação dentro do IF, pra ficar assim:

Com uma mudança bem simples, conseguimos diminuir o custo de requisições no banco de dados e APIs externas.

Show?

Os códigos utilizados estão disponíveis no GitHub: https://github.com/vmussak/CasosDaVidaReal

Por hoje é só isso, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s