Gosto muito dos seus vídeo... Mas, 8 meses atrás eu apareci aqui e não entendi nada. Eu estava começando a aprender programação... Hoje eu vim assistir denovo, cara, é satisfatório conseguir entender de boas kkkkk É tipo você ver alguém falando inglês, meses depois você ouve a mesma pessoa falando só que você entende, é fantástico kkk muito bom seus vídeos
Mano, passei em uma entrevista técnica por conta desse vídeo, seu papel é muito fundamental para quem está na nossa área, continue com esse conteúdo de qualidade.
Vi o video quando foi lançado eu boiei completamente. Hj depois de uma temporada de muito estudo e depois de conseguir implementar alguns pequenos projetos com javascript eu consegui ver o sentido do vídeo. Vi que o meu código esta tomando um rumo que é difícil de gerenciar. Aprendizado é mesmo um processo crescente e com o tempo e experiencia vamos sentido as novas necessidades e elas ficam mais embasadas quando se passa pelos fundamentos da programação. Parabéns pelo projeto Telo!!
E pensar que 3 meses atrás, eu não tava entendo nada e agora eu entendo cada linha do código e porque dessa alterações e algo que fico muito feliz. Houve uma revolução da minha parte. 🥳🥳
Revolução? Revolução é quando vc inova implementando algo que impulsiona todo um sistema de forma mais eficiente. No caso vc pode ter aprendido algo que torna aquilo que vc sabe mais eficiente. Mas aí é uma EVOLUÇÃO pq vc progrediu em algo que sabia, tendo mais eficiencia melhorando aquilo que já tinha conhecimento. Revolução é quando algo novo muda tudo oq vc sabia com uma outra formula...tipo uma máquina nova Então não, é uma revolução mas sim EVOLUÇÃO.
Vi esse vídeo pela primeira vez a anos atrás e finalmente agora eu usei isso em um projeto, embora seja só um projeto para aprender. Muito obrigado deschamps, você realmente faz um trabalho e tanto aqui no youtube😀😀👊.
Esse conceito é o "O" do SOLID. Se chama Open/Close Methods Diz basicamente que os métodos tem que ser abertos para serem extensíveis e fechados para alteração. No código que você fez ele é extensível, pois para criar um novo comando basta adicionar um novo método. E além disso, ele é fechado para alterações, pois o comando "ArrowLeft" (por exemplo) nunca sofrerá alteração. Isso facilita a escrita, mas facilita principalmente a escrita de testes. Cada alteração que fizer não vai quebrar os testes já feitos. Muito bom
modularização e separação de cada peça de componente como se fosse uma peça de lego é simplesmente lindo na programação vc entender tudo na programação como peças que se conectam de diferentes formas pra formar o todo é simplesmente muito daora
Incrível como a noção de linguagem de programação faz toda diferença, não sei programar em Java pois aprendi Python e tô começando C++, e mesmo assim compreendi tudo, esse mundo de códigos é tão lindo e interessante, engloba vontade continua de buscar melhoria e conhecimento, queria muito que as pessoas abrissem os olhos para isso e tornassem limpas suas mentes para o futuro, parabéns por compartilhar de seus conhecimentos de forma intuitiva e dinâmica.
Mano, nem sou da área de jogos, mas muitas das dicas que tu deu já me deram várias ideias pra simplificar meus códigos de alguns sistemas que eu faço no Python. Teus vídeos são muito bons, fala só o necessário e explica bem direitinho, não fica enrolando, parabéns!
Tô aprendendo taaanto com essa playlist que já refatorei vários plugins de uma libzinha que tô criando. Não tenho nem palavras pra agradecer pelo quão rico é esse conteúdo, simplesmente um banho de novos conhecimentos e meios de analisar e pensar sobre a fluidez do processo de desenvolvimento. Parabéns Filipe, e obrigado por dividir seu tempo e conhecimento de forma tão clara e concisa!
Dou aulas de Português, Matemática e Legislação para concursos. Para mim, saber ensinar é fundamental, mostrar os verdadeiros "porquês" que fazem a mágica funcionar. E digo com toda sinceridade: Sou apaixonada pela sua didática. Eu amo programar, e tem coisas que eu já sei fazer mas assisto seus vídeos para aprender "como ensinar" minhas matérias. Você é fantástico! Parabéns!!!
Assim que foi lançado esse vídeo, eu assisti com muita animosidade, mesmo sem entender muita coisa. Eu já tinha contato com a programação, mas pouco conhecimento. Hoje, estou concluindo minha formação em desenvolvimento web pela Trybe. E este vídeo está me ajudando em um teste técnico para atuar na área de back-end. Obrigado mesmo, por essa troca de conhecimento!
Muito bom!!! Sempre quando estou fazendo esses tipos de códigos, onde tem IF's a primeira coisa que penso é, esses IFs são temporários kkk, depois vamos consertar. E é de fato aquilo que você comentou, sobre se sentir incomodado pelo IF's e é bacana isso, pelo fato de querer ver o que foi programado de forma mais 'profissional'.
Mano você é muito foda... você fala de uma forma que estimula as pessoas a perguntar, e se como vc estivesse com as mesmas duvidas que nós, explica de forma simples e clara... muitas pessoas por ai complica, vc faz parecer simples
Estou aprendendo python e fico feliz de entender um pouco da lógica... Entendi cerca de 40% a 60% do vídeo e já fico satisfeito, ainda chegarei a entende completamente!
Seu comentário ja faz um ano, então provavelmente ja deve ter pego a ideia. Mas no python da pra replicar essa funcionalidade criando uma classe com metodos decorados com @staticmethod (para nao precisar instanciar um objeto de uma classe que apenas armazena metodos) e depois retorna-los com getattr(SuaClasse, "nome do metodo")
Usei grande parte desse vídeo em um código de Excel VBA. É um checklist onde o código precisava registrar os valores verdadeiros ou falso em diferentes células, variando de acordo com a data em questão. Criei variáveis que se alternavam de acordo com a data, indicando onde o código precisava registrar os valores. Funcionou muito bem, eliminei centenas de linhas de comando, tudo ficou mais otimizado e aprendi bastante com isso"
Certa vez, desenvolvendo um jogo, usei esse conceito, mas tem um problema, especificamente para controles: Você consegue mensurar somente a última tecla pressionada, passando a referência dela para o literal. O grande problema é quando você tem múltiplas teclas pressionadas, o que é comum, por exemplo: moveUp + moveRight ou até mesmo moveLeft + attack. Sempre vai parar para fazer um ou outro, mesmo trazer só para o movimento, não vai escapar de precisar verificar com IF os múltiplos direcionais. Caso exista alguma outra abordagem, gostaria de saber qual. Aliás, muito bom conteúdo, parabéns.
Essa é a quarta vez que assisto esse vídeo. A lógica da coisa ficou super fácil quando criei um exemplo prático aqui. Meu Deus, erá tão nítido e eu não conseguia ver a simplicidade e a melhoria para o código. Obrigado por compartilhar seu conhecimento.
Olá Filipe. Primeiramente parabéns pelo canal. Seus vídeos têm me ajudado e inspirado no mundo da programação. Me mudei tem pouco menos de um ano para o Canadá e estou no primeiro semestre de Computer Programmer Analyst. Estou enfrentando a barreira da língua + o fator do universo da programação ser algo totalmente novo para mim (Sou PhD em Biologia). Estou aprendendo Java com muita dificuldade, pois me perco bastante nos IF statements (ou até mesmo com a lógica de como escrever o código, não tenho ideia de como fazer). Obrigado por ter me inspirado em seguir o caminho da programação e querer ser um profissional diferenciado.
Que sensacional Thiago!!! Muito obrigado pelo comentário e não desista, de o tempo necessário para a neuroplasticidade do seu cérebro precisa para fazer a magia dele. Vamo que vamo!
Eu tinha visto esse vídeo há um tempo, e não tinha entendido nada, e agora, ao ver novamente, consigo entender com clareza tudo o que você fez, vídeo muito massa!
Show de video... estava fazendo um projeto novo e com problemas de arquitetura para resolver... foi um toque que ja não me lembrava mais e resolveu um problemão... vlw !!
Parabéns pelo vídeo. Há ano uso essas técnicas pois as regras de fluxograma mudam muito o caminho a seguir. Nada melhor que reduzir código e deixar limpo para manutenção.
Muito obrigado por disponibilizar isso. Não tive uma base acadêmica na computação e sempre tive muita dificuldade não só de aprender o estado da arte do desenvolvimento de software, como também até mesmo descobrir o que existe e o que preciso aprender. Teu vídeo me encheu de esperança em que posso aprender muito por aqui.
Cara, esses vídeos em que vc põe a mão na massa aplicando conceitos (como a série do robô, e essa agora) são os melhores. Continua com eles, boy! Valeu!
eu assisti 50 segundos desse video e já decidi assistir a playlist toda. Quando vi a miniatura do vídeo achei que era inglês com o título traduzido. O conteúdo parece realmente muito bom
Parabéns companheiro! A categoria tem orgulho de professores como você, precisamos mais disso, pessoas que saibam descomplicar os ensinamentos dessa área, seus vídeos são fantásticos, grande abraço!
*E ai turma, quem adivinhou que a gente ia remover os ifs dessa forma???* 🤝 E caso tenha alguma sugestão melhor, seja super bem vindo em colocar nos comentários, fechado? E o vídeo que falei sobre Factory e Observers, você nunca mais vai ler um código da mesma forma: ruclips.net/video/4OLCrClb_So/видео.html
Rodrigo, excelente pergunta!!! Uma das formas que eu vejo seria melhor de implementar se trouxermos o conceito de Game Loop. Eu manteria o estado de cada tecla pressionada (ou não pressionada) dentro do Game e a cada loop entenderia qual está pressionada para aplicar o efeito dela. Mas dai isso muda toda a arquitetura e para um "Meu Primeiro Jogo" ficaria complicado, inclusive das pessoas entenderem o Game Loop. Para um "Meu Segundo Jogo" acho que seria interessante.
Muito bom. Essa playlist está sendo um divisor de águas para a área da programação. É a verdadeira mão na massa, aprendendo na prática. Mais uma sacada de gênio do Filipe Teló. Parabéns, meu amigo!
Eu percebi você quase revelando seu real sobrenome no minuto 4:02 em hahaha, a cada dia mais empolgado com a área da tecnologia ao assistir seus vídeos, espero poder me tornar um excelente programador algum dia.
Filipe, quero deixar aqui meu agradecimento a vc. Nao somente por toda contribuição na área profissional, mas tb no que tange a inspirar PESSOAS! Esse conteúdo é perfeito, parabéns Filipe, vc é sensacional! Isso me abriu um leque de possibilidades para melhorar meus códigos. Certa vez eu estava pensando em como eu poderia melhorar uma funcao que tinha criado, e bastou eu assistir esse vídeo seu para tudo se esclarecer. Continuo acompanhando seu canal, como eu disse, é de grande valia não somente p área profissional, mas tb para a pessoal. Que Deus continue abençoando vc e toda sua família. Obrigado! 🙏
Parabensssssssss pra todos nos! Passei a playlist pro pessoal da minha equipe e eles curtiram muito felipe! Galera querendo analisar e eliminar alguns itens e é claro sempre estudar para evoluir! Acabei de finalizar o arquitetura limpa e o assunto casa muito! Grande abraçooooo!
É muito bom ter uma pessoa com esta capacidade, ou melhor, plasticidade técnico-educacional, onde nos mostra de forma simples e direta, uma visão lógica efetiva e resolutiva. Agradeço muitíssimo por sua iniciativa na criação deste fantástico canal, o qual sigo a mais tempo por seus vídeos, newsletter e posts, pois foi por este que resolvi mudar minha carreira, entrando para a área de programação.
Eu vi esse vídeo logo quando comecei a aprender a programar em js, faz aproximadamente 9 meses... assisti ele inteiro e não entendi muita coisa mesmo você explicando tudo muito bem. Hoje eu estava passando por esse vídeo e resolvi reassistir, nossa, eu consegui absorver tanta informação, vários coisas que eu vi porem não sabia por que estava sendo feito dessa forma e não de outra... Obrigado Filipe pelos seus vídeos, foi com eles que eu decidi me tornar um programador e com suas dicas de como aprender a programar meus estudos foram muito menos frustrantes.
Interessante esse object literal. Eu venho do c++/python e do jeito q vc usou parece bastante com hashset. A complexidade temporal dele é a mesma do hashset? Lookup em tempo constante tbm igual o hashset do python/c++?
Filipe eu nunca trabalhei na área, mas estou aprendendo muito, esses vídeos estão trazendo uma ENORME evolução não só para mim, e sim para quem está assistindo! Sinceramente, estou começando a enxergar os códigos de uma outra maneira. Só tenho a agradecer.
Eu adoro o Felipe! ele sempre trás essa energia nos vídeos... mas hoje, ele me surpreendeu; consegui ter um insight só observando ele programar logo no inicio! consegui resolver o problema que encontrei no meu projeto atual, e ainda... fiquei Full dopamina para terminar essa aplicação em uma tarde! valeu @Felipe Deschamps..
Esse foi o primeiro vídeo que eu vi seu e eu gostei muito. Acbei achando seu canal sem querer quando estava estudando e estava esperando o código compilar. Acabei de me inscrever. Estou imprersionado com a forma que você explica. Parabens!
Muito bom Filipe! Adoro ver, discutir e estudar patterns, solid e clean code. Arquitetura e refatoramento me empolgam também. Quem replica códigos de uma versão para outra aqui na empresa e encontram na versão mais atual, tudo diferente porque eu refatorei, fica louco comigo kkkkkkk
Dá pra criar uma função "padrão" e deixar algo assim: { ...padrao(player) { console.log("Tecla sem comportamento") }} E na hora de chamar a função: const funcao = acceptedMoves[key] || acceptedMoves["padrao"]; Dai n precisa nem do "if" pra verificar se [e undefined.
Há dois meses atrás, esse foi o primeiro video teu que assisti, e não entendi absolutamente nada. Parecia grego. Mas me pegou. Depois desse vídeo, fui maratonando todo teu canal, pior que série da Netflix, mesmo sem entender nada. Mas me inspirava. E é gratificante demais voltar aqui pra reassistir tão pouco tempo depois, e ter uma visão tão diferente, entendendo o que foi passado e (agora) aprendendo com isso. Valeu pelo excelente conteúdo de sempre :) você é dez, motiva a gente a crescer duma forma sensacional!
Eu assisti esse vídeo a uns 7 a 8 meses atrás, ainda não trabalhava na área de desenvolvimento e só tinha feito um sistema todo bagunçado, que fui fazendo por conta própria, sem conhecimento e sem ajuda, somente com força de vontade e quando assisti o vídeo, não vi muito sentido. Pra mim era só escrever o código de uma maneira diferente, o que faz total sentido, realmente é só escrever de maiera diferente, porém o código fica muito melhor, responsabilidade fica mais definida e como dito no vídeo, trabalhamos apenas a regra de negócio, o responsável por executar, eu não mexo. Hoje, dps de 5/6 meses de trabalho, isso já faz muito mais sentido pra mim. Top o/
Sensacional Mateus, é isso ai!!! E Marcello, vou dar uma sugestão: espere uns 2 dias e veja a playlist de novo do início, quando você chegar nesse vídeo o seu cérebro vai estar MUITO mais maduro e preparado para encaixar essa informação.
Saudações Filipe, ótimo vídeo, para quem é Júnior ou acima, muitos desenvolvedores esquecem, de estruturar seus projetos de forma limpa, e organizada, facilitando a manutenção do código.
Seus vídeos são muito bons para quem gosta de programar (independente do nível). Desde a série do clean code minha forma de programar mudou bastante ate na facilidade de detectar problemas no código.
Oi Filipe, video sensacional como sempre, mas fiquei com uma duvida aqui: O titulo do video é "como reduzir a quantidade de IFs de um código", mas no final do video eu percebi que você na verdade aumentou o número de ifs, colocando mais uma condicional pra verificar se a função movePlayer é undefined ou não. As demais condicionais acabaram indo pras funções no objeto que você criou. A minha dúvida é: até que ponto abstrair as coisas é importante e necessário? Eu tenho visto muito vídeo de gente falando de overengineering e queria entender um pouco melhor sobre isso. Fiquei me perguntando se não seria mais fácil vc abstrair todas aquelas condicionais do jeito que estavam pra uma função com a responsabilidade de tratar elas. Valeu filipe
Nicolas, sensacional sua pergunta!!! O autor de um overengineering nunca vai dizer que aquilo é overengineering, correto? 😂mas nesse caso, onde eu sei que não vão existir mais comandos do que aqueles e essa é pra ser o "meu primeiro jogo multiplayer" acho que facilmente dá para dizer é é overegineering. Mas sobre aumentar a quantidade de ifs, talvez o jeito certo de encarar é que "não vai aumentar" se a quantidade de teclas aumentar. Nota que anteriormente, para cada condicional na verdade você tinha duas condicionais, uma específica sobre a tecla pressionada e a outra específica sobre a regra de negócio. Agora trocamos todas as condicionais específicas sobre a tecla pressionada por uma única condicional genérica, que é a verificação da existência da chave dentro do objeto. Mas eu posso estar vendo isso de forma tendenciada para provar o meu ponto, correto? Por isso está sendo *extremamente* importante a participação de vocês nos comentários, ta realmente muito massa e muito obrigado pela pergunta meu caro :)
@@RodrigoCastroAngelo sim, naquela parte do código onde ele quis tirar os IFs sim, mas se você ver dentro das funções no objeto movePlayer ele deixou os ifs la dentro com uma condicional a menos. Ele só moveu os ifs que estavam em um lugar pra outro foi dai que surgiu a pergunta. Mas valeu pela resposta :D
@@Nicolasmelo12 Verdade! Realmente ficaram os ifs lá de dentro. Em relação à pergunta sobre ser importante abstrair ou não, uma metodologia que eu vejo bastante (inclusive uns vídeos do Filipe) é fazer da forma mais simples e ir refatorando à medida que essas abstrações forem se tornando necessárias. No caso desse jogo, por exemplo, um bom momento para fazer essa refatoração poderia ser quando fosse incluir a funcionalidade da bomba. Analisando o vídeo também, dá pra entender que a ideia foi criar complexo a ponto de dar pra mostrar alguns problemas de eng. de software, mas ao mesmo tempo simples o suficiente para ser possível explicar dentro de um vídeo de alguns minutos. Isso deve ser bem difícil de balancear, mas mesmo assim as técnicas apresentadas aqui podem ser usadas em contextos bem mais complexos que vão surgindo no dia a dia
Na vdd os Ifs podem não ter reduzido de forma escrita, mas foi reduzido sim na execução. Antes para chegar no ultimo IF todos eles seriam validados, agora como ele percorre por um valor dentro do objeto, somente será executado o IF verificador de tecla e o IF de dentro do valor passado para o objeto. Ou seja, não precisa fazer o programa validar N IFs antes do que realmente ele precisa. Querendo ou não isso tbm é um Tunning na aplicação, além de melhorar a compreensão do código e facilitar futuras manutenções.
Mano, acabei de usar essa técnica em um projeto aqui e, não só o código ficou mais limpo e compreensível, como economizou muito do processamento! Muito bom!
"Só que na minha visão isso não resolve o problema, pq sabe qual que é o problema? Identificar o problema. Daí eu te pergunto, qual que é o real problema?" Thanos: I M P O S I B L E
Cara, achei seu canal por sorte e era justamente o q eu tava procurando, tudo explicado de maneira fácil e objetiva e ainda por cima com um entusiasmo incrível. Vou pesquisar mais pra conhecer mais seu trabalho mas já adianto que já botei alguns vídeos aqui no "assistir mais tarde", estou começando na carreira de dev (tentando mudar de área de Eng civil) e é ótimo conhecer trabalhos assim
Muito legal o vídeo, Filipe! Um detalhe interessante: com programação orientada a objetos, polimorfismo e interfaces, DE FATO conseguimos tirar esses ifs. Basta criarmos uma interface genérica com uma operação e fazer os diferentes tipos de classe implementar a interface. O cliente deve receber um objeto do tipo da interface. Quando ele chamar a operação definida na interface, será chamado o método concreto implementado na classe específica.
Massaaa Otavio, muito obrigado por inserir essa informação! Eu não sou o maior fã de polimorfismo, costumo evitar classes em favorecimento a composição. Mas sei que composição não é bala de prata :)
A pergunta que não quer calar: E qual dos dois métodos consome menos processamento e menos memória? (nem estou preocupado com "tamanho de código", mas isso poderia ser analisado também).
Cara, assim. O if já é uma estrutura condicional, já é apropriadamente feito para este tipo de operação. basicamente, não vai ter quase nada no consumo de heap memomy, ou ram. Diferentemente do object literal, já que vai estar criando um objecto e etc, mas essa diferença é tão mínima, que nem entra em questão. Então, pra evitar que seu código fique muito verboso, e poluído, o melhor e adotar object literal, array matching, para este tipo de situação. E utilizar early if, sempre que possível.
@@toddy5153 exatamente isso, hoje em dia os PCs e celulares vem com muita memória e processamento. Eu ainda uso muito if mas em classe separada só para identificar o botão chamar o método.
Parabens Filipe cada dia mais me torno uma versao melhor da versao de ontem gracas e conteudos tao significativos como o seu. Muito obrigado mesmo por me tornar uma programador cada vez melhor.
Filipe, Se você criar uma função "Undefined" dentro daquele mesmo objeto, e retornar um valor como Console.logo('Indefinido'). Você não poderia remover aquele If(moveFunction)?
@@FilipeDeschamps Tenta implementar no próximo vídeo, você mesmo disse que não devemos ter medo de apagar uma parte do código e refazer melhor. hahahaha
Permita-me dar uma opinião, afinal tbm sou o Filipe 😁. No caso do exemplo do vídeo, não existe um comportamento específico para quando o utilizador pressionar alguma tecla que não esteja previsto. Aquele trecho de código é responsável por tratar movimentos previstos, logo faço a pergunta que o Filipe fez no vídeo: faria sentido inserir essa regra no trecho sugerido? 🤔 Mas que bom você perguntou, é sempre bom discutir novas formas de pensar, o mesmo é válido para a minha resposta. 😊
Legal sua forma de pensar. Mas no caso não funcionaria e tem um bom motivo pra não funcionar ai fica no seu critério analisar ;) Como eu também não gostei do IF e se quiser loggar algo, que pode ajudar é isso: moveFunction ? moveFunction(player) : console.log('Move not permitted')
Funcionaria se você colocasse transformasse em String. String(undefined) === 'undefined'. É possível colocar o nome de uma função com o nome undefined dentro de um objeto, e se você sempre passar qualquer nome dentro de String(), você conseguiria acessar o método.
@@FilipeDeschamps parabéns pelo video kkk agora rumo a próxima etapa kk Eu fiz aqui da minha maneira tudo oque vc listou .. des do inicio ate a network kkk usei wss ... e não kk eu também não usei switch, apenas criei um objeto quase semelhante a técnica que usou hehe Ansioso para os próximos vídeos, parabéns telo♡
Comecei um curso sobre programar games recentemente e cai aqui de paraquedas ,me inscrevi na hora , é muito útil esse tipo de conteúdo ainda mais quando é mostrado na prática .continue fazendo esses exemplos práticos principalmente de jogos se possível.
Totaaal Leo!!! Parece total, mas como ele não instancia um novo strategy, acredito que ele não se encaixa no pattern. Eu ia trazer ele e o Command, mas achei que ficaria demais para a playlist.
Estou neném e programação, pois comecei a estudar ADS agora mas suas explicações são ótimas, tranquilas e da para entender, por mais que tem muita palavra nova pra mim, mas consigo entender.
Se tu usar elif, tu não consegue segurar uma tecla pra ir pra cima e apertar outra pra ir pra esquerda. Como eles são situações independentes, não se usa elif.
Fala Felipe, não é só você que está gostando não, estou gostando bastante e aprendendo também. Continue assim, conteúdo de qualidade. Ansioso para o próximo vídeo.
Agora com 46 anos 😁 tentando aprender Programação.... Graças a Deus já trabalhei muito nessa vida, e atualmente trabalho como telemarketing.... Sou formado em tecnólogo.... Porém, desisti várias vezes em ir até o final.... Lógica de Programação, eu pretendo dedicar esse ano e depois, avançar em HTML, Css, 🏦 de Dados e Java Script, obrigado 👍😊 pelos vídeos.... Com ajuda de Deus e meu esforço irei chegar lá, tá OK 👍😂
Estou muito feliz, pois é a primeira vez que consigo acompanhar e entender perfeitamente tudo oq vc está falando Filipe! Meus estudos de JS estão dando resultado! Tá gostoso demais essa playlist!!!
Cara, seu conteúdo é extremamente inteligente, funcional e simples. Pra respeitar isso ta ai a frase "A simplicidade é o ultimo grau da sofisticação" - Leonardo da Vinci. Parabéns e não para por favor!
kkkkkk Danilo, não fica com vergonha não, eu mostrei a primeira versão do código e é uma gambiarra sem fim!! Tamo junto nessa, fala sua sugestão sendo gambiarra não e dai a gente vai se ajudando, fechado?
Acabei de encontrar o canal, cliquei por curiosidade e em 5 min de aula já me inscrevi aqui. Bom demais, vou estar acompanhando. Já programo em Python e tô pegando Java agora
*PERA!!!!!* - Antes de ler os comentários, olha que *massinha* que ficou meu *Curso de Programação* curso.dev To muito orgulhoso, sério 🎉 🎉 🎉
Gosto muito dos seus vídeo... Mas, 8 meses atrás eu apareci aqui e não entendi nada.
Eu estava começando a aprender programação...
Hoje eu vim assistir denovo, cara, é satisfatório conseguir entender de boas kkkkk
É tipo você ver alguém falando inglês, meses depois você ouve a mesma pessoa falando só que você entende, é fantástico kkk muito bom seus vídeos
Mano, passei em uma entrevista técnica por conta desse vídeo, seu papel é muito fundamental para quem está na nossa área, continue com esse conteúdo de qualidade.
QUE MASSAAAAAA EVERTON 😍 parabéns meu caro!! Matou a pau!!!! 🤝 👍
Explica como foi pf kk
Ward
@@developerinexplicavel Ward
Caralho, brabo
cara, essa energia que vc transmite pra comunidade é incrível
Ele parece que tá no crack, cheiradão na coca
@@kurokurovich kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Verdade pode crer o cara é bom! ruclips.net/video/RQ5GVl8l3Zg/видео.html
E é uma energia que tu vê que não é nem um pouco forçado. O cara é apaixonado por tecnologia e por falar disso.
@@kurokurovich coé ele é mó feliz eu só vejo o vídeo mais por causa disso msm ele parece ser uma pessoa mto simpática e legal
Esse homem tem um dom muito grande de lecionar. Explica linha a linha do código com riqueza de detalhes. Muito bom !!!
Vi o video quando foi lançado eu boiei completamente. Hj depois de uma temporada de muito estudo e depois de conseguir implementar alguns pequenos projetos com javascript eu consegui ver o sentido do vídeo. Vi que o meu código esta tomando um rumo que é difícil de gerenciar.
Aprendizado é mesmo um processo crescente e com o tempo e experiencia vamos sentido as novas necessidades e elas ficam mais embasadas quando se passa pelos fundamentos da programação.
Parabéns pelo projeto Telo!!
Show Jessandro! Só esbarrei no seu comentário agora por conta do filtro dos Membros 🤝 👍
aconteceu a mesma comigo, assisti esse vídeo um tempo atrás e boiei muito...e agora vim parar aqui por algum motivo na madrugada e entendi tudo :D
@@pedrocarbon Estou assistindo e boiando. Estou começando agora meu processo de aprendizagem, vamos vê no que vai da
to boaindo muito hard vendo o video agora
E pensar que 3 meses atrás, eu não tava entendo nada e agora eu entendo cada linha do código e porque dessa alterações e algo que fico muito feliz. Houve uma revolução da minha parte. 🥳🥳
Revolução? Revolução é quando vc inova implementando algo que impulsiona todo um sistema de forma mais eficiente.
No caso vc pode ter aprendido algo que torna aquilo que vc sabe mais eficiente. Mas aí é uma EVOLUÇÃO pq vc progrediu em algo que sabia, tendo mais eficiencia melhorando aquilo que já tinha conhecimento. Revolução é quando algo novo muda tudo oq vc sabia com uma outra formula...tipo uma máquina nova
Então não, é uma revolução mas sim EVOLUÇÃO.
Vi esse vídeo pela primeira vez a anos atrás e finalmente agora eu usei isso em um projeto, embora seja só um projeto para aprender. Muito obrigado deschamps, você realmente faz um trabalho e tanto aqui no youtube😀😀👊.
Esse conceito é o "O" do SOLID. Se chama Open/Close Methods
Diz basicamente que os métodos tem que ser abertos para serem extensíveis e fechados para alteração.
No código que você fez ele é extensível, pois para criar um novo comando basta adicionar um novo método. E além disso, ele é fechado para alterações, pois o comando "ArrowLeft" (por exemplo) nunca sofrerá alteração.
Isso facilita a escrita, mas facilita principalmente a escrita de testes. Cada alteração que fizer não vai quebrar os testes já feitos.
Muito bom
up
Boa!
up
modularização e separação de cada peça de componente como se fosse uma peça de lego é simplesmente lindo na programação vc entender tudo na programação como peças que se conectam de diferentes formas pra formar o todo é simplesmente muito daora
Incrível como a noção de linguagem de programação faz toda diferença, não sei programar em Java pois aprendi Python e tô começando C++, e mesmo assim compreendi tudo, esse mundo de códigos é tão lindo e interessante, engloba vontade continua de buscar melhoria e conhecimento, queria muito que as pessoas abrissem os olhos para isso e tornassem limpas suas mentes para o futuro, parabéns por compartilhar de seus conhecimentos de forma intuitiva e dinâmica.
Eu queria ter tido um professor como o Filipe na faculdade! Sua didática e carisma são contagiantes.
Mano, nem sou da área de jogos, mas muitas das dicas que tu deu já me deram várias ideias pra simplificar meus códigos de alguns sistemas que eu faço no Python. Teus vídeos são muito bons, fala só o necessário e explica bem direitinho, não fica enrolando, parabéns!
Espetacular. Imagina quantas pessoas estão ampliando conhecimento através de um vídeo tão polido quanto esse. Parabéns Filipe.
Showwwwww Drausio!!! Que bom cara, é legal ver toda a discussão positiva que isso está gerando, várias abordagens, tudo isso é muito valioso!
Polido define o Filipe
Tô aprendendo taaanto com essa playlist que já refatorei vários plugins de uma libzinha que tô criando. Não tenho nem palavras pra agradecer pelo quão rico é esse conteúdo, simplesmente um banho de novos conhecimentos e meios de analisar e pensar sobre a fluidez do processo de desenvolvimento. Parabéns Filipe, e obrigado por dividir seu tempo e conhecimento de forma tão clara e concisa!
Dou aulas de Português, Matemática e Legislação para concursos. Para mim, saber ensinar é fundamental, mostrar os verdadeiros "porquês" que fazem a mágica funcionar.
E digo com toda sinceridade: Sou apaixonada pela sua didática. Eu amo programar, e tem coisas que eu já sei fazer mas assisto seus vídeos para aprender "como ensinar" minhas matérias. Você é fantástico!
Parabéns!!!
Assim que foi lançado esse vídeo, eu assisti com muita animosidade, mesmo sem entender muita coisa. Eu já tinha contato com a programação, mas pouco conhecimento. Hoje, estou concluindo minha formação em desenvolvimento web pela Trybe. E este vídeo está me ajudando em um teste técnico para atuar na área de back-end. Obrigado mesmo, por essa troca de conhecimento!
Muito bom!!! Sempre quando estou fazendo esses tipos de códigos, onde tem IF's a primeira coisa que penso é, esses IFs são temporários kkk, depois vamos consertar. E é de fato aquilo que você comentou, sobre se sentir incomodado pelo IF's e é bacana isso, pelo fato de querer ver o que foi programado de forma mais 'profissional'.
Showwww Leo, é isso aí 😍
Mano você é muito foda... você fala de uma forma que estimula as pessoas a perguntar, e se como vc estivesse com as mesmas duvidas que nós, explica de forma simples e clara... muitas pessoas por ai complica, vc faz parecer simples
Massaaa, que bom ler isso :) to gostando bastante de conversar com vocês através dos vídeos!
Estou aprendendo python e fico feliz de entender um pouco da lógica... Entendi cerca de 40% a 60% do vídeo e já fico satisfeito, ainda chegarei a entende completamente!
Seu comentário ja faz um ano, então provavelmente ja deve ter pego a ideia. Mas no python da pra replicar essa funcionalidade criando uma classe com metodos decorados com @staticmethod (para nao precisar instanciar um objeto de uma classe que apenas armazena metodos) e depois retorna-los com getattr(SuaClasse, "nome do metodo")
Usei grande parte desse vídeo em um código de Excel VBA. É um checklist onde o código precisava registrar os valores verdadeiros ou falso em diferentes células, variando de acordo com a data em questão. Criei variáveis que se alternavam de acordo com a data, indicando onde o código precisava registrar os valores. Funcionou muito bem, eliminei centenas de linhas de comando, tudo ficou mais otimizado e aprendi bastante com isso"
Sensacional Patrick, parabéns meu caro 🤝
Certa vez, desenvolvendo um jogo, usei esse conceito, mas tem um problema, especificamente para controles: Você consegue mensurar somente a última tecla pressionada, passando a referência dela para o literal.
O grande problema é quando você tem múltiplas teclas pressionadas, o que é comum, por exemplo: moveUp + moveRight ou até mesmo moveLeft + attack. Sempre vai parar para fazer um ou outro, mesmo trazer só para o movimento, não vai escapar de precisar verificar com IF os múltiplos direcionais.
Caso exista alguma outra abordagem, gostaria de saber qual.
Aliás, muito bom conteúdo, parabéns.
cara eu cai nesse video do nada e agora nao consigo parar de absorver as informacoes dos seus videos, parabens! Muito dinamico o conteudo.
carambam o cara trabalha rindo, tipo amando oque faz, energia irada.
Essa é a quarta vez que assisto esse vídeo. A lógica da coisa ficou super fácil quando criei um exemplo prático aqui. Meu Deus, erá tão nítido e eu não conseguia ver a simplicidade e a melhoria para o código. Obrigado por compartilhar seu conhecimento.
Olá Filipe. Primeiramente parabéns pelo canal. Seus vídeos têm me ajudado e inspirado no mundo da programação. Me mudei tem pouco menos de um ano para o Canadá e estou no primeiro semestre de Computer Programmer Analyst. Estou enfrentando a barreira da língua + o fator do universo da programação ser algo totalmente novo para mim (Sou PhD em Biologia). Estou aprendendo Java com muita dificuldade, pois me perco bastante nos IF statements (ou até mesmo com a lógica de como escrever o código, não tenho ideia de como fazer). Obrigado por ter me inspirado em seguir o caminho da programação e querer ser um profissional diferenciado.
Que sensacional Thiago!!! Muito obrigado pelo comentário e não desista, de o tempo necessário para a neuroplasticidade do seu cérebro precisa para fazer a magia dele. Vamo que vamo!
Eu tinha visto esse vídeo há um tempo, e não tinha entendido nada, e agora, ao ver novamente, consigo entender com clareza tudo o que você fez, vídeo muito massa!
Você é demais cara!! Comecei a me apaixonar por programação e você foi uma das minhas influências! Parabéns pelo canal que tá ficando incrível
Que massaaaa Márcio, fico feliz meu caro :) tamo junto nessa, vamos conversar cada vez mais de programação!
Show de video... estava fazendo um projeto novo e com problemas de arquitetura para resolver... foi um toque que ja não me lembrava mais e resolveu um problemão... vlw !!
Ahhhhhh que massa Lucas!! Ótimo timing!!!!
queria acordar de boa, mas vc ja me dá blow mind logo no começo do dia Felipe!! Vídeo mto da hora! Vlw
haahhahahahahahah show Leo!!!
Parabéns pelo vídeo. Há ano uso essas técnicas pois as regras de fluxograma mudam muito o caminho a seguir. Nada melhor que reduzir código e deixar limpo para manutenção.
Massaa Geovani tamo junto meu caro!
Estou curtindo essa playlist com a sua visão e explicação. Programar é fácil, mas saber programar é uma arte. Muito show.
Parabéns!
Show Nilton, tamo junto meu caro :)
Muito obrigado por disponibilizar isso. Não tive uma base acadêmica na computação e sempre tive muita dificuldade não só de aprender o estado da arte do desenvolvimento de software, como também até mesmo descobrir o que existe e o que preciso aprender. Teu vídeo me encheu de esperança em que posso aprender muito por aqui.
Cara, esses vídeos em que vc põe a mão na massa aplicando conceitos (como a série do robô, e essa agora) são os melhores.
Continua com eles, boy! Valeu!
Massaaa, fechado Daniel :)
eu assisti 50 segundos desse video e já decidi assistir a playlist toda. Quando vi a miniatura do vídeo achei que era inglês com o título traduzido. O conteúdo parece realmente muito bom
Parabéns companheiro! A categoria tem orgulho de professores como você, precisamos mais disso, pessoas que saibam descomplicar os ensinamentos dessa área, seus vídeos são fantásticos, grande abraço!
Já vi esse vídeo umas 3 vezes e tô aqui de novo. Me acrescenta muito 👍
*E ai turma, quem adivinhou que a gente ia remover os ifs dessa forma???* 🤝 E caso tenha alguma sugestão melhor, seja super bem vindo em colocar nos comentários, fechado?
E o vídeo que falei sobre Factory e Observers, você nunca mais vai ler um código da mesma forma: ruclips.net/video/4OLCrClb_So/видео.html
Eu achei essa solução bem interessante, mas por curiosidade, como você trataria esses inputs com comandos compostos, por exemplo, ctrl + A?
Rodrigo, excelente pergunta!!! Uma das formas que eu vejo seria melhor de implementar se trouxermos o conceito de Game Loop. Eu manteria o estado de cada tecla pressionada (ou não pressionada) dentro do Game e a cada loop entenderia qual está pressionada para aplicar o efeito dela. Mas dai isso muda toda a arquitetura e para um "Meu Primeiro Jogo" ficaria complicado, inclusive das pessoas entenderem o Game Loop. Para um "Meu Segundo Jogo" acho que seria interessante.
E se (if) criássemos um observer para cada tecla que queiramos que tenha funcionalidade no sistema ?
Tô feliz, pq foi como imaginei, mas com o toque especial do F. Teló. kkkkk Valeu, man!
@@FilipeDeschamps Obrigado
Vou continuar acompanhando de perto até o "Décimo Quinto Jogo"
Adoro seu conteúdo, sucesso nessa caminhada
Muito bom. Essa playlist está sendo um divisor de águas para a área da programação. É a verdadeira mão na massa, aprendendo na prática. Mais uma sacada de gênio do Filipe Teló. Parabéns, meu amigo!
Sensacional António, tamo junto meu caro!!! Vamos conversar coisas muito legais ainda :)
Eu percebi você quase revelando seu real sobrenome no minuto 4:02 em hahaha, a cada dia mais empolgado com a área da tecnologia ao assistir seus vídeos, espero poder me tornar um excelente programador algum dia.
Ahahahahaha notei tb
acho que ele brincou com a referência "Teló"... de Michel Teló que os outros dizem que ele se parece
@@jonatasbueno9889 Justamente, eu fiz o comentário reforçando essa brincadeira
@@jonatasbueno9889 nossa, temos um xerox holmes aqui
esse é o mal de fazer video para programadores ... a galera n deixa passar nada !!!!
kkkkkkkkkkkkkkkkkk
Filipe, quero deixar aqui meu agradecimento a vc. Nao somente por toda contribuição na área profissional, mas tb no que tange a inspirar PESSOAS! Esse conteúdo é perfeito, parabéns Filipe, vc é sensacional! Isso me abriu um leque de possibilidades para melhorar meus códigos. Certa vez eu estava pensando em como eu poderia melhorar uma funcao que tinha criado, e bastou eu assistir esse vídeo seu para tudo se esclarecer. Continuo acompanhando seu canal, como eu disse, é de grande valia não somente p área profissional, mas tb para a pessoal.
Que Deus continue abençoando vc e toda sua família. Obrigado! 🙏
Parabensssssssss pra todos nos!
Passei a playlist pro pessoal da minha equipe e eles curtiram muito felipe!
Galera querendo analisar e eliminar alguns itens e é claro sempre estudar para evoluir!
Acabei de finalizar o arquitetura limpa e o assunto casa muito!
Grande abraçooooo!
Puts que massaaaaaaaaaaa meu caro!!! Muito obrigado por compartilhar o vídeo, isso ajuda MUITO!!! Vamo que vamo!!!! 💪🤝
Se tem vídeo do Michel Teló programando tem like
hahahahahah showww Kleber!!!!
É muito bom ter uma pessoa com esta capacidade, ou melhor, plasticidade técnico-educacional, onde nos mostra de forma simples e direta, uma visão lógica efetiva e resolutiva.
Agradeço muitíssimo por sua iniciativa na criação deste fantástico canal, o qual sigo a mais tempo por seus vídeos, newsletter e posts, pois foi por este que resolvi mudar minha carreira, entrando para a área de programação.
N sei porque o youtube me recomendou isso mas você é simplesmente sensacional, sua animação é contagiante kkkkk
Agr e membro 😯
Eu vi esse vídeo logo quando comecei a aprender a programar em js, faz aproximadamente 9 meses... assisti ele inteiro e não entendi muita coisa mesmo você explicando tudo muito bem.
Hoje eu estava passando por esse vídeo e resolvi reassistir, nossa, eu consegui absorver tanta informação, vários coisas que eu vi porem não sabia por que estava sendo feito dessa forma e não de outra...
Obrigado Filipe pelos seus vídeos, foi com eles que eu decidi me tornar um programador e com suas dicas de como aprender a programar meus estudos foram muito menos frustrantes.
Essa playlist tá sensacional! Como sempre tá padrão delicinha de qualidade
"Padrão delicinha de qualidade" hahahahahahahahahahhaha
Peguei esse video aleatoriamente e achei surpreendentemente divertido assistir
✅ *GOSTA DE NOTÍCIAS SOBRE PROGRAMAÇÃO E TECNOLOGIA?* Então você vai pirar nisso: filipedeschamps.com.br/newsletter
Sensacional essa newsletter, facilita muito o dia-a-dia, e nos faz economizar muito tempo e cliques LOL
Interessante esse object literal. Eu venho do c++/python e do jeito q vc usou parece bastante com hashset. A complexidade temporal dele é a mesma do hashset? Lookup em tempo constante tbm igual o hashset do python/c++?
Cara, você tem a didática mais doce desse youtube. Obrigado!
O Filipe quase digitou Teló no sobrenome kkkkkkkkkkkkkkk' Brincadeiras à parte, continue seu excelente trabalho, estimulando as pessoas a programar.
Filipe eu nunca trabalhei na área, mas estou aprendendo muito, esses vídeos estão trazendo uma ENORME evolução não só para mim, e sim para quem está assistindo! Sinceramente, estou começando a enxergar os códigos de uma outra maneira. Só tenho a agradecer.
Que masssaaaa Khaled!!!!! Obrigado pelo comentário!! Vamo que vamo!
10 meses depois, youtube: " Esse vídeo parece ser a sua cara, toma ele aí! " kkkkk e by the way, conteúdo animal!
Pse
Eu adoro o Felipe! ele sempre trás essa energia nos vídeos... mas hoje, ele me surpreendeu; consegui ter um insight só observando ele programar logo no inicio! consegui resolver o problema que encontrei no meu projeto atual, e ainda... fiquei Full dopamina para terminar essa aplicação em uma tarde! valeu @Felipe Deschamps..
Nem começou o vídeo e já dei like!
ahhahah show Leo!!!!
Esse foi o primeiro vídeo que eu vi seu e eu gostei muito. Acbei achando seu canal sem querer quando estava estudando e estava esperando o código compilar. Acabei de me inscrever. Estou imprersionado com a forma que você explica. Parabens!
Showww Guilherme, seja muito bem vindo meu caro 🤝 👍
Muito bom Filipe! Adoro ver, discutir e estudar patterns, solid e clean code. Arquitetura e refatoramento me empolgam também. Quem replica códigos de uma versão para outra aqui na empresa e encontram na versão mais atual, tudo diferente porque eu refatorei, fica louco comigo kkkkkkk
Showwwww Eduardo! E faz bem refatorar, parabéns meu caro!!!
Felipe não sei muito sobre JavaScript mas adoro ver seus vídeos , para poder ser um programador melhor no futuro
Showwww João, valeu meu caro!! Tamo junto nessa :)
Dá pra criar uma função "padrão" e deixar algo assim:
{ ...padrao(player) { console.log("Tecla sem comportamento") }}
E na hora de chamar a função:
const funcao = acceptedMoves[key] || acceptedMoves["padrao"];
Dai n precisa nem do "if" pra verificar se [e undefined.
por debaixo dos panos ainda está sendo feito um if checando se é truthy se não ele pega a outra opção. mas é mais elegante parabéns.
Showww Vinícius, eu cheguei a considerar um movimento padrão, mas eu não sabia o que definir como movimento padrão 😂
Há dois meses atrás, esse foi o primeiro video teu que assisti, e não entendi absolutamente nada. Parecia grego. Mas me pegou. Depois desse vídeo, fui maratonando todo teu canal, pior que série da Netflix, mesmo sem entender nada. Mas me inspirava. E é gratificante demais voltar aqui pra reassistir tão pouco tempo depois, e ter uma visão tão diferente, entendendo o que foi passado e (agora) aprendendo com isso. Valeu pelo excelente conteúdo de sempre :) você é dez, motiva a gente a crescer duma forma sensacional!
as únicas palavras que eu entendi do vídeo foram: vídeo e playlist.
kkkkkk ta valendo Marcus!
Somos 2
Tbm n entendi bulúfas. Mas n compreender Java dá nisso mesmo
Eu ai kkkkkk
@@feature552...Script
Eu assisti esse vídeo a uns 7 a 8 meses atrás, ainda não trabalhava na área de desenvolvimento e só tinha feito um sistema todo bagunçado, que fui fazendo por conta própria, sem conhecimento e sem ajuda, somente com força de vontade e quando assisti o vídeo, não vi muito sentido.
Pra mim era só escrever o código de uma maneira diferente, o que faz total sentido, realmente é só escrever de maiera diferente, porém o código fica muito melhor, responsabilidade fica mais definida e como dito no vídeo, trabalhamos apenas a regra de negócio, o responsável por executar, eu não mexo.
Hoje, dps de 5/6 meses de trabalho, isso já faz muito mais sentido pra mim. Top o/
4:02 😂😂😂
const pessoa = {
nome: "Filipe",
sobrenome: "Tel
Eu não tinha percebido kkkk
Esse vídeo contém Easter eggs
kkkkkkkkkkkkkkk
??
Voltei pra ver! kkkk
O cara ensina tão bem que até eu um iniciante consegui compreender
Essas sutilezas cômicas (04:00) elevam o nível dos vídeos haha
Não sei como ele consegue continuar sério nesse momento, eu ia estar rachando Kkkk.
Ele podia colocar uns erros de gravação tb, hehe
kkkkkkkkk show
Caraca, vi o vídeo em 2x e nem reparei nessa haushussh
Ele deve ter rido muito por dentro, não pode kkkkkkk
Não entendi, alguém pode me explicar por favor?
Amei... estou começando no JavaScript e o parear está sendo uma boa idéia para entender a linguagem.
No começo dessa série eu não estava entendendo nada... Agora eu tô tipo: "caramba, faz total sentido!".
Sensacional Mateus, é isso ai!!! E Marcello, vou dar uma sugestão: espere uns 2 dias e veja a playlist de novo do início, quando você chegar nesse vídeo o seu cérebro vai estar MUITO mais maduro e preparado para encaixar essa informação.
Saudações Filipe, ótimo vídeo, para quem é Júnior ou acima, muitos desenvolvedores esquecem, de estruturar seus projetos de forma limpa, e organizada, facilitando a manutenção do código.
Showww Antonio!!! É isso ai, que bom que estamos conseguindo discutir essas coisas na playlist 👍
sobrenome: "Telo" huauahuauhauauha
kkkkkkkkkkkk foi quase, culpa de vocês kkkkkk
@@FilipeDeschamps sim, foi quase! Mas obrigado pelo vídeo, esse refactoring é bem útil!
Melhor de tudo é que ele faz isso e continua bem sério e concentrado kkkkkk
parei o video no exato momento pra vir ler os comentários. kkkkkkkkkkkkkk
@@TheAlexkidx eu também KKKKKKKKKKKKKKKKK
Seus vídeos são muito bons para quem gosta de programar (independente do nível). Desde a série do clean code minha forma de programar mudou bastante ate na facilidade de detectar problemas no código.
Ahhhh que massa Anderson, fico feliz! E quanto mais interagirmos no canal melhor :) vamo que vamo!!!!
Oi Filipe, video sensacional como sempre, mas fiquei com uma duvida aqui:
O titulo do video é "como reduzir a quantidade de IFs de um código", mas no final do video eu percebi que você na verdade aumentou o número de ifs, colocando mais uma condicional pra verificar se a função movePlayer é undefined ou não. As demais condicionais acabaram indo pras funções no objeto que você criou. A minha dúvida é: até que ponto abstrair as coisas é importante e necessário? Eu tenho visto muito vídeo de gente falando de overengineering e queria entender um pouco melhor sobre isso.
Fiquei me perguntando se não seria mais fácil vc abstrair todas aquelas condicionais do jeito que estavam pra uma função com a responsabilidade de tratar elas.
Valeu filipe
Nicolas, conta de novo a quantidade de IF no código final. Na minha conta aqui tinha 4 e passou pra 1
Nicolas, sensacional sua pergunta!!! O autor de um overengineering nunca vai dizer que aquilo é overengineering, correto? 😂mas nesse caso, onde eu sei que não vão existir mais comandos do que aqueles e essa é pra ser o "meu primeiro jogo multiplayer" acho que facilmente dá para dizer é é overegineering. Mas sobre aumentar a quantidade de ifs, talvez o jeito certo de encarar é que "não vai aumentar" se a quantidade de teclas aumentar. Nota que anteriormente, para cada condicional na verdade você tinha duas condicionais, uma específica sobre a tecla pressionada e a outra específica sobre a regra de negócio. Agora trocamos todas as condicionais específicas sobre a tecla pressionada por uma única condicional genérica, que é a verificação da existência da chave dentro do objeto. Mas eu posso estar vendo isso de forma tendenciada para provar o meu ponto, correto? Por isso está sendo *extremamente* importante a participação de vocês nos comentários, ta realmente muito massa e muito obrigado pela pergunta meu caro :)
@@RodrigoCastroAngelo sim, naquela parte do código onde ele quis tirar os IFs sim, mas se você ver dentro das funções no objeto movePlayer ele deixou os ifs la dentro com uma condicional a menos. Ele só moveu os ifs que estavam em um lugar pra outro foi dai que surgiu a pergunta. Mas valeu pela resposta :D
@@Nicolasmelo12 Verdade! Realmente ficaram os ifs lá de dentro. Em relação à pergunta sobre ser importante abstrair ou não, uma metodologia que eu vejo bastante (inclusive uns vídeos do Filipe) é fazer da forma mais simples e ir refatorando à medida que essas abstrações forem se tornando necessárias. No caso desse jogo, por exemplo, um bom momento para fazer essa refatoração poderia ser quando fosse incluir a funcionalidade da bomba.
Analisando o vídeo também, dá pra entender que a ideia foi criar complexo a ponto de dar pra mostrar alguns problemas de eng. de software, mas ao mesmo tempo simples o suficiente para ser possível explicar dentro de um vídeo de alguns minutos. Isso deve ser bem difícil de balancear, mas mesmo assim as técnicas apresentadas aqui podem ser usadas em contextos bem mais complexos que vão surgindo no dia a dia
Na vdd os Ifs podem não ter reduzido de forma escrita, mas foi reduzido sim na execução. Antes para chegar no ultimo IF todos eles seriam validados, agora como ele percorre por um valor dentro do objeto, somente será executado o IF verificador de tecla e o IF de dentro do valor passado para o objeto. Ou seja, não precisa fazer o programa validar N IFs antes do que realmente ele precisa. Querendo ou não isso tbm é um Tunning na aplicação, além de melhorar a compreensão do código e facilitar futuras manutenções.
Mano, acabei de usar essa técnica em um projeto aqui e, não só o código ficou mais limpo e compreensível, como economizou muito do processamento! Muito bom!
uma sugestão de solução completamente sem ifs, e, na minha opinião, de melhor leitura...
const acceptedMoves = {
ArrowUp(player) => {
player.y = Math.max(player.y - 1, 0);
}
ArrowRight(player) => {
player.x = Math.min(player.x + 1, screen.width);
}
ArrowDown(player) => {
player.y = Math.min(player.y + 1, screen.height);
}
ArrowLeft(player) => {
player.x = Math.max(player.x - 1, 0);
}
}
Matou a pau Kiske!!!!
Desculpe a ignorância mas esses códigos são html ou javascript? teria como me informar? sou novo na programação
@@carinharpjp551 javascript!!! html não é linguagem de programação amigo.
@@theguy2887 Tendi, obrigado pela sua resposta, as vezes eu vejo gnt falando que sabe programar em html aí eu pensei que era, vlw por esclarecer.
Cara, vc nasceu pra ser professor... Tem uma fala muito clara na explicação...
"Só que na minha visão isso não resolve o problema, pq sabe qual que é o problema? Identificar o problema. Daí eu te pergunto, qual que é o real problema?"
Thanos: I M P O S I B L E
não sei nada de programação, mas vc faz ficar fácil de entender até. meus parabens
Filipe, dps faz um vídeo sobre editores de código
Show! Eu tenho um vídeo sobre esse editor que eu uso, dá uma olhada: ruclips.net/video/Q7YfzbJRzm0/видео.html
Cara, achei seu canal por sorte e era justamente o q eu tava procurando, tudo explicado de maneira fácil e objetiva e ainda por cima com um entusiasmo incrível.
Vou pesquisar mais pra conhecer mais seu trabalho mas já adianto que já botei alguns vídeos aqui no "assistir mais tarde", estou começando na carreira de dev (tentando mudar de área de Eng civil) e é ótimo conhecer trabalhos assim
Muito legal o vídeo, Filipe! Um detalhe interessante: com programação orientada a objetos, polimorfismo e interfaces, DE FATO conseguimos tirar esses ifs. Basta criarmos uma interface genérica com uma operação e fazer os diferentes tipos de classe implementar a interface. O cliente deve receber um objeto do tipo da interface. Quando ele chamar a operação definida na interface, será chamado o método concreto implementado na classe específica.
Massaaa Otavio, muito obrigado por inserir essa informação! Eu não sou o maior fã de polimorfismo, costumo evitar classes em favorecimento a composição. Mas sei que composição não é bala de prata :)
Sempre que vejo seus vídeos bate uma vontade inexplicável de programar, amo isso
A pergunta que não quer calar: E qual dos dois métodos consome menos processamento e menos memória? (nem estou preocupado com "tamanho de código", mas isso poderia ser analisado também).
O método que consome menos processamento é o método mais fácil de dar manutenção
@@lucasemmanuel6535 🤣 eu acho que um código bem escrito sem muito if else e bem limpo(clear code) reduz o uso do processamento
Cara, assim. O if já é uma estrutura condicional, já é apropriadamente feito para este tipo de operação. basicamente, não vai ter quase nada no consumo de heap memomy, ou ram. Diferentemente do object literal, já que vai estar criando um objecto e etc, mas essa diferença é tão mínima, que nem entra em questão. Então, pra evitar que seu código fique muito verboso, e poluído, o melhor e adotar object literal, array matching, para este tipo de situação. E utilizar early if, sempre que possível.
@@toddy5153 exatamente isso, hoje em dia os PCs e celulares vem com muita memória e processamento. Eu ainda uso muito if mas em classe separada só para identificar o botão chamar o método.
Parabens Filipe cada dia mais me torno uma versao melhor da versao de ontem gracas e conteudos tao significativos como o seu. Muito obrigado mesmo por me tornar uma programador cada vez melhor.
Sensacional Ricardo, que massa ler isso! E estamos juntos nessa, porque eu aprendo muito com todos vocês! Vamo que vamo!!!!!
Filipe, Se você criar uma função "Undefined" dentro daquele mesmo objeto, e retornar um valor como Console.logo('Indefinido').
Você não poderia remover aquele If(moveFunction)?
MIND BLOWN, eu não sei e tenho até medo de testar ahahahahahahah mas cara, que jeito massa de pensar heim? Gostei 👍
@@FilipeDeschamps Tenta implementar no próximo vídeo, você mesmo disse que não devemos ter medo de apagar uma parte do código e refazer melhor. hahahaha
Permita-me dar uma opinião, afinal tbm sou o Filipe 😁. No caso do exemplo do vídeo, não existe um comportamento específico para quando o utilizador pressionar alguma tecla que não esteja previsto. Aquele trecho de código é responsável por tratar movimentos previstos, logo faço a pergunta que o Filipe fez no vídeo: faria sentido inserir essa regra no trecho sugerido? 🤔 Mas que bom você perguntou, é sempre bom discutir novas formas de pensar, o mesmo é válido para a minha resposta. 😊
Legal sua forma de pensar. Mas no caso não funcionaria e tem um bom motivo pra não funcionar ai fica no seu critério analisar ;)
Como eu também não gostei do IF e se quiser loggar algo, que pode ajudar é isso:
moveFunction ? moveFunction(player) : console.log('Move not permitted')
Funcionaria se você colocasse transformasse em String. String(undefined) === 'undefined'. É possível colocar o nome de uma função com o nome undefined dentro de um objeto, e se você sempre passar qualquer nome dentro de String(), você conseguiria acessar o método.
velho o senhor é top , virei fan ... nossa cara c sabe mesmo , a didatica é muito massa, aprendendo muito com c
Até que fim kkk adeuuus if kkk, me deu raiva ver todos estes if no seu projeto kkkk...
hahahahahahahah conseguimos!!!!!!
@@FilipeDeschamps parabéns pelo video kkk agora rumo a próxima etapa kk
Eu fiz aqui da minha maneira tudo oque vc listou .. des do inicio ate a network kkk usei wss ... e não kk eu também não usei switch, apenas criei um objeto quase semelhante a técnica que usou hehe
Ansioso para os próximos vídeos, parabéns telo♡
O trabalho é o mesmo! A diferença é somente o paradigma. Não entendo o porquê de tanta raiva com os ifs
Haha é meio que um estresse mental kkk coisa boba de quem foge do costume
Comecei um curso sobre programar games recentemente e cai aqui de paraquedas ,me inscrevi na hora , é muito útil esse tipo de conteúdo ainda mais quando é mostrado na prática .continue fazendo esses exemplos práticos principalmente de jogos se possível.
A ideia se parece muito com o strategy Pattern, remover todas as condições e monte de If do código.. :) ótima vídeo aula
Totaaal Leo!!! Parece total, mas como ele não instancia um novo strategy, acredito que ele não se encaixa no pattern. Eu ia trazer ele e o Command, mas achei que ficaria demais para a playlist.
Estou neném e programação, pois comecei a estudar ADS agora mas suas explicações são ótimas, tranquilas e da para entender, por mais que tem muita palavra nova pra mim, mas consigo entender.
é facil não usar tantos ifs é só usar elif k
São diferentes kkkk
Às vezes elif não roda
Se tu usar elif, tu não consegue segurar uma tecla pra ir pra cima e apertar outra pra ir pra esquerda. Como eles são situações independentes, não se usa elif.
Não estamos falando de python então é else if mas isso atrapalharia o código
😂😂😂
Fala Felipe, não é só você que está gostando não, estou gostando bastante e aprendendo também. Continue assim, conteúdo de qualidade. Ansioso para o próximo vídeo.
Showww Anderson, tamo junto!!!!
Agora com 46 anos 😁 tentando aprender Programação....
Graças a Deus já trabalhei muito nessa vida, e atualmente trabalho como telemarketing....
Sou formado em tecnólogo....
Porém, desisti várias vezes em ir até o final....
Lógica de Programação, eu pretendo dedicar esse ano e depois, avançar em HTML, Css, 🏦 de Dados e Java Script, obrigado 👍😊 pelos vídeos....
Com ajuda de Deus e meu esforço irei chegar lá, tá OK 👍😂
Parabéns, Felipe.
Confesso que resolvia tudo com ifs e case.
"Então viram muito muito simples" e eu: Aham to entendendo tudo kkkkkkkkkk....
Estou muito feliz, pois é a primeira vez que consigo acompanhar e entender perfeitamente tudo oq vc está falando Filipe! Meus estudos de JS estão dando resultado! Tá gostoso demais essa playlist!!!
Já corri atrás do meu livro de Clean Code
Showww Lucas, tenho certeza que você vai gostar muito :)
pesquisa SOLID tn ai no google/youtube é ate mais importante
Cara, seu conteúdo é extremamente inteligente, funcional e simples.
Pra respeitar isso ta ai a frase "A simplicidade é o ultimo grau da sofisticação" - Leonardo da Vinci.
Parabéns e não para por favor!
Show Pedro, obrigado pelo comentário e por trazer essa frase 🤝
Tava mentalmente pensando num array de funções de movimentos já tinha um tempo, mas tava com medo do povo falar que é gambiarra kkkkkkkk
kkkkkk Danilo, não fica com vergonha não, eu mostrei a primeira versão do código e é uma gambiarra sem fim!! Tamo junto nessa, fala sua sugestão sendo gambiarra não e dai a gente vai se ajudando, fechado?
Felipe. Já assisti várias vezes.
Amo muito seus assuntos sobre arquitetura.
Estou usando os conceitos em Python.
Aula no vídeo, aula nos comentários. "Só agradece!"
Muito bom a sua atenção nessa parte de excesso de código
Só eu que estou no Hello Word, e não vê a hora de aprender logo ? Kkkk
Tbm k
Hello Word = olá palavra
Hello World = olá mundo
:)
AIHSuiAHSUIAUISa
@Danilo O meu foi "Olá mundo". xD
Acabei de encontrar o canal, cliquei por curiosidade e em 5 min de aula já me inscrevi aqui. Bom demais, vou estar acompanhando. Já programo em Python e tô pegando Java agora
Showwww Victor, seja muito bem vindo meu caro!!!! 🤝