🚨PARE DE OVER ENGINEERING 🚨

Leia esse post e reflita. A quantidade de código obfuscado que eu vejo é grande, e em geral quanto menos senior a pessoa, mais obfusca o código, abusando de conceitos tanto OOP, quanto funcional. Esse fio é sobre isso 🧵
#bolhadev cc: @sseraphini
Já entrou numa base de código que a sua sensação é que vc navega, navega e só tem “osso” ali, não tem uma “carninha” onde está o verdadeiro business logic da parada? Vc ta procurando por exemplo quem lê o arquivo, onde ta a lógica que faz aquilo, mas vc só encontra abstracão..
São arquivos e arquivos tentando achar de onde vem, e vc acha a parada láá escondida em algum lugar, essa eh sua “carne”, o resto tooodo que vc navegou era “só osso”, abstração atrás de abstração pra fazer algo simples.
Nao sei se pro dev junior, isso pode parecer uma coisa do tipo: “Nossa, que código complicado, mas é assim que deve ser aplicação profissional né? Muita abstração por que é complexo”. NÃO, oq provavelmente você ta lendo, é um código lixo mesmo.
Já trabalhei em aplicações com milhões de linhas de código, uma engine inteira de um jogo AAA por exemplo, e o código pode ser simples e objetivo. E já vi gente fazendo um app MUITO simples, em uma complexidade CAÓTICA.
Não sei se as pessoas querem mostrar que sao inteligentes, ou sei lá… vou dar um exemplo concreto. Você chega pra pessoa e fala, “opa vai ter um arquivo de input e a gente precisa ler”. Amigo, você vai fazer uma função que lê o arquivo e acabou.
Você nao vai fazer nada “future-proof”, isso nao existe. Você nao vai fazer uma interface IFileReader, que tem um monte de função, que lê um arquivo, que lê uma lista de arquivos, que lê arquivo texto e binário, que comprime e descomprime o arquivo, vc nao vai fazer…
…uma IAdaptorAbstractFileFactoryJavascriptBeans!!! Não para!! Quando começo ler esse tipo de coisa em código, já fico louco. Se você tem UM requisito, você faz AQUELE requisito, se o requisito muda ou se expande, você REFATORA.
Nao tem nada errado em fazer um ou dois copy pastes, se vc ver que vai virar um pattern, aí sim vc bota em uma função, aí sim vc bota numa classe, vc faz um estado. Nao existe essa de fazer código “pronto para o futuro”, vc não sabe o futuro.
A mesma coisa vale pra quem abusa de funcional, vejo muito isso em quem abusa de curry, tipo:

const sum => x=>y=>z=> return x+y+z;

sum(1)(2)(3); //6

Porra amigo! Aí vc me quebra… obvio que nao é simples assim, mas vcs sabem do que to falando…
Ao inves do cara fazer um lambda, seguir uma stream de código funcional que tem lógica.. nao, eh funcao que recebe uma funcao, e retorna uma funcao que retorna uma funcao dentro da funcao, que aí tem um callback que vc tem que passar pra essa funcao… 🤯
O cara quer amarrar a parada em um purismo funcional sem justificativa alguma. Nao tem nada de errado com código simples e empírico.
Frameworks e bibliotecas são outra parada tbm que obfuscam demais, balanceie MUITO o custo/beneficio de introduzir um framework/biblioteca nova no seu código. PRINCIPALMENTE se for um framework “zumbi”
Framework “zumbi” é aquele que se alastra na sua base de código, é dificil mante-lo isolado em um cantinho, ele simplesmente vai impregnar seu código inteiro (alô RxJS)
Ultima coisa é, se você tem um sistema orientado a eventos, TENHA CERTEZA que você tem ferramentas para ter observabilidade desses eventos. Quando algo acontece no código, a primeira coisa que você quer saber é aonde está o originador do evento e por qual processo…
…esse evento passou pra chegar até ali. Sistemas baseados em stack são bem mais fáceis, porque você consegue ver o originador da ação na base da sua callstack.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Gustavo Nunes 🇧🇷 ➡️ 🇺🇸

Gustavo Nunes 🇧🇷 ➡️ 🇺🇸 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @GubnunBR

Feb 19
Programar NÃO É DIFÍCIL, o problema que vejo das pessoas que desistem é que existe uma inércia inicial muito grande até você chegar a um ponto de inflexão que você se vê realmente entendendo e capaz de fazer coisas úteis. Essa thread é sobre isso 🧵:

#bolhadev cc:@sseraphini
O mito do “gênio” da programação acho que prejudica muito quem quer aprender a programar. As pessoas acham que aquilo é “rocket science” ou precisa de algum tipo de “aptidão” pra coisa. Eu já mentorei MUITAS pessoas a começar na carreira de programação…
A única correlação alta que vejo entre as que conseguem e as que não conseguem é: tem gente que desiste. Desiste antes de chegar no ponto de inflexão na curva do primeiro tweet. E é verdade, existe uma inércia inicial MUITO grande em programação…
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(