📚 Livro para entender estruturas de dados e algoritmos: https://amzn.to/4bYu4VE
Video Transcript:
pode else post postado mute This conversation você quer saber se pode usar ELS a resposta é óbvio que pode mas eu vou te mostrar Por que essa discussão existe Como sempre faço minha divisão zinha aqui bem bonitinha no meio e a gente vai ter um time que vai ser o time do ELS e a galera que é anti ELS e a questão aqui é que um vai ficar discutindo com o outro porque a galera do ELS vai argumentar que é simples funciona não tem porque não usar tá na linguagem para usar e a galera que é anti else vai dizer que é um antipattern que tem maneiras melhores de fazer a mesma coisa que deixam o código mais clean e que dão mais manutenção mais manutenibilidade pro código o ponto que eu vou focar hoje o ponto que eu vou te mostrar hoje é o que que essa galera que tá argumentando e o que que a gente pode aprender com eles no sentido de Quando que a gente pode usar um approach melhor do que else E por que que a gente quereria fazer isso Qual o sentido disso Porque apesar de ser uma discussão técnica extremamente boba e bastante inconsequente se a gente prestar atenção aqui a gente consegue aprender alguns outros patterns que fazem bastante sentido mas assim essa galera aqui tem um ponto também se você já me viu resolvendo elit code eu quase sempre jogo o ELS no meio do elit Code porque você tem que saber quando fazer o over Engineering e quando não fazer agora a pergunta que é o CNE dessa questão a pergunta que mora no centro dessa discussão é qual que é o grande problema do ELS e existe sim um e na minha opinião basicamente só um grande problema que o ELS tem o grande problema do ELS ele é o problema de diferentes fluxos de execução é o código haduken e aqui eu trouxe um exemplo bastante cachado para mostrar o que acontece quando a gente leva esse problema pra enésima potência a gente tem um código que se a for verdade ele vai executar isso aqui e se a não for verdade ele vai executar isso aqui embaixo uma coisa tá bastante desconexa da outra elas estão bem longes no código e aqui no meio aqui nesse espaço pode acontecer 1 milhão de coisas e isso aqui toda essa indentação cria n fluxos de execução dentro do código seu código pode executar isso aqui ou de repente ele pode executar isso aqui mas ele pode também executar isso daqui e ele pode executar isso daqui depois só que se B for falso na verdade ele não vai executar isso daqui ele vai executar isso aqui embaixo Mas ele também pode entrar aqui só que se isso aqui não for verdade ele também pode executar isso aqui isso que que eu acabei de descrever esses diferentes fluxos de execução a gente chama de complexidade ciclomática e é basicamente isso que a gente quer evitar quanto maior a complexidade ciclomática do seu código mais difícil é de dar manutenção de debugar de entender o que de fato tá acontecendo porque esses n números de fluxos de execução diferentes vão fazer com que seja bastante confuso entender o que que tá acontecendo em cada situação aqui e é isso esse é o principal problema e esse caso em específico aqui é bastante fácil de corrigir aqui eu peguei um código bastante esdrúxulo e bem exagerado para mostrar esse problema raramente no mundo real você vai um código assim só que você vai ver muitos códigos parecidos com isso em que a técnica que eu vou aplicar aqui também se aplica esse código a função dele é retornar uma response com um valor 4 3 2 ou 1 dependendo do tamanho do nosso item se o número aqui for 99 por exemplo e a gente chamar o nosso código ele printa aqui que o nosso número tá entre 0 e 100 e retorna 1 se o número tiver entre 101 e 1000 ele retorna 2 se o número tiver entre 1 E1 e 10. 000 ele retorna 3 se ele for maior do que 10. 000 ele retorna 4 Tá bastante ruim e tá bastante complexo de ver o que que vai tá executando aqui de fato muitas vezes você não vai ver um cheque de valor assim só que você vai ver por exemplo if user P is logged in por exemplo e é muito comum você ter essa lógica totalmente nesta de dentro de vários ifs se o usuário tiver logado E se o usuário preencher certas condições então a gente aprendeu a refaturar esse caso esdo que eu peguei aqui a gente aprende também a refaturar outras complexidades ciclomáticos que vem a partir de if else qual que é um approach que pode funcionar aqui bem nesse caso aqui a gente pode fazer uma combinação de duas coisas que é inverter o cheque e trocar a ordem das operações Como assim aqui se o valor for maior do que 10.
000 ele retorna 4 Então a primeira coisa que a gente faz é jogar isso aqui lá para cima a gente tem if value maior do que 10. 000 e ao invés de precisar atribuir esse quatro PR response a gente pode retornar imediatamente e fazendo esse early return a gente consegue garantir que tudo que vem depois disso aqui que se o código já passou dessa linha aqui necessariamente o valor tá abaixo de 10. 000 abaixo ou igual o segundo Case que a gente quer aqui é esse aqui se o valor tiver entre 1000 e 10.
000 como a gente já garantiu que ele é menor do que 10.