Executando verificação de segurança...
2

Quem disse?

Isso ajuda a ilustrar o que eu sempre falo sobre boas práticas, inclusive em minha palestra "A péssima prática de seguir boas práticas".

Nem sempre quem fala sobre a tal boa prática é uma autoridade no assunto. Pode até ser uma pessoa famosa, mas não quer dizer que seja autoridade. Mesmo que seja, ela pode errar naquele ponto.

Mas o pior é que as pessoas passam repetir aquilo, muitas vezes perdendo a essência do que ela diz. E aí vem o que é o problema da boa prática.

Sem explicação do motivo dela ser assim, ela é ruim. Sem considerar o contexto que vai usar, ela é ruim. Se você sabe a motivação de usar ela não é mais uma boa prática e sim uma técnica com justificativa. É um conhecimento adquirido para aplicar conforme o contexto.

Então antes de saber como fazer isso, deveria saber porque deveria. Se ninguém explicou, ignore, é "cagação de regra". Com a explicação muda tudo, mesmo que seja o mesmo resultado. E isso deve valer para qualquer coisa na vida. Questione tudo o que te empurram. Ainda mais em programação. Sua função profissional é questionar.

Tem casos que:

  • deve sim evitar um if, e usar uma sobrecarga, ou polimorfismo
  • deve suprimir um if ou um else que claramente é desnecessário por causa da lógica aplicada ali
  • pode ser melhor usar um switch ou um pattern matching
  • deve compor a condição para resolver em apenas um if que executa a mesma coisa.
  • pode ser que seja melhor usar um operador condicional (que as pessoas chamam equivocadamente de ternário).
  • deve mudar a ordem de execução para evitar o if (early return ou faz entrar em um primeiro, não precisa mais verificar os outros)
  • um try-catch pode ser melhor, ainda que costuma acontecer mais o contrário e o usam onde deveria ter um if
  • um monte de if pode virar um só dentro de um laço
  • precisa da condição mas não do if.

Por exemplo:

if (x ==1) return true;
else return false;

   
pode ser escrito como:

return x == 1;

   
Esse é um exemplo. Em cada caso pode ter situação que merece reduzir. De forma geral fica complicado dizer. Não pegue uma solução e fique procurando um problema para aplicá-la, quando tem um problema, procure pela solução.

Não dá para reduzir um if absolutamente necessário.

Dá para seguir outras regras, que não são o if em si, como por exemplo, em vez de fazer uma condição, chamar uma função ou variável com um nome significativo para pegar o resultado no if. Isso evita comentários. Mas tem casos que não precisa de nada disso. Tem caso que o comentário é melhor.

aceito = x == 1;
if (aceito) return Status.Aceito;

Precisa aprender álgebra booleana para reduzir ou compor as expressões lógicas. Não é o if mas é como usá-lo melhor. Expressão lógica é uma coisa, if (comando de seleção e desvio) é outra bem diferente, e precisa entender isso.

E estude toda a computação, para ter subsídios, ferramentais na sua mente que permitam você tomar a melhor decisão.

Procure dar exemplos para saber como reduzir cada um deles. Pode ser que a questão nem seja do if em si, pode ser a expressão lógica, ou a organização do código em torno dele.

Eu e outras pessoas já respondemos bastante sobre isso, nem vou pesquisar tudo, só alguns exemplos:

Não tem atalhos para aprender programação. Até tem, mas eles não te levam pro mesmo caminho.

Faz sentido para você?

Espero ter ajudado.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Carregando publicação patrocinada...