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

[ Reflexão ] Eu tenho dificuldades em ler códigos de outras pessoas

Dificuldade em ler código alheio

Eu, desde o ínico em que iniciei no mundo da programação, nunca parei para ler um código completo de outro programador, tirando o código de programadores que me contrataram como free-lancer...

Bom, essas útimas semanas eu parei ler códigos de repositórios relativamente popular como o heightlight.js e eu simplesmente não entendi nada...

Quando eu leio um outro código que não é o meu, me parece desorganizado. É um tanto difícil de colocar em palavras. Quando eu abro um repositório, eu não sei por onde começar, e quando eu clico em um aleatório, este mesmo arquivo importa vários outros e ai eu saio navegando por estes arquivos que também tem outros imports e no final, eu sinto que não entendi nada naquele código.

E, como é importante ler o código de outros programadores, me sinto um impasse e não sei como melhorar essa skill... Eu comecei a ler o código do Tabnews, e algumas coisas eu entendi muito bem, já outras não, pois era algo do qual eu não tinha muito conhecimento middlewares. No geral, eu ainda sinto que estou longe de pegar um código, ler e entender e por fim contribuir. Eu busco começar a contribuir mais com a comunidade, mas antes preciso entender o código para não fazer pull request sem sentido, e a pessoa responsável pelo o code review perder tempo

Conclusão:

Isto é algo que eu quero mudar a longo prazo. No momento não tenho pressa, mas eu quero melhorar isto ao poucos de qualquer forma.

Alguém tem dicas?

5

Em sua defesa e de todos que começam a programar, fazer um code review decente requer uma coisa muito importante, que você saiba o que você quer ler.

Quando a gente abre um repo qualquer no github, buscando olhar o codigo e entender por si só, prepare a frustação, pois mesmo que o codigo esteja muito organizado, que a pessoa que escreveu tenha ano de experiência com determinada linguagem, os motivos por trás daquela implementação podem ser o verdadeiro obstaculos do entendimento.

Eu acho que um bom ponto para começar a ler código alheio é ler codigo das pessoas próximas a tu, perguntar o que ela queriam com determinadas implementações e, por incrível que pareça, dar o seu código pra outras pessoas revisarem e fazerem as mesmas perguntas, "Mas que *%@#$ você fez aqui?" rsrs

2

Realmente, as pessoas podem pensar o mesmo do meu código. Irei pensar em práticas para diminui isto, como adicionar mais comentários e etc... Não pensei neste ponto. Além disso irei começar lendo código de projetos menores até me acostumar mais com está prática.

Obrigado pelo o comentário!

1

Olá Araujo! Bem, adicionar mais comentários não torna seu código melhor. O que deve ser feito é melhorar a escrita de código, torná-lo fácil de entender. E isso pode ser feito de algumas formas simples:

  • Nomeando funções, variáveis e classes com nomes autoexplicativos (mesmo que eles se tornem longos);
  • Criar arquivos separados para diferentes funcionalidades do código;
  • Criar funções que realizem apenas uma ação, fazendo o que seu nome realmente diz que ela faz;
  • Procurar sempre a melhor forma para resolver o problema.

Essas são apenas algumas formas de tornar o código melhor.

“O uso adequado de comentários é para compensar nossa falha em nos expressar em código.”
Por Robert C. Martin (autor do livro Clean Code)

Óbvio, as vezes é necessário adicionar um comentário em nosso código. Mas sempre que pensar em comentar algo, pense: "O que eu poderia fazer para tornar esse código mais fácil de entender?". Acredite, sempre há uma forma de melhorar o código, mesmo que o processo seja demorado ou cansativo.


Recomendo a leitura dos livros "O guia do mochileiro Python" e "Clean code".
Até mais!

1

Opa, estou ciente de que uma quantidade exagerada de comentários é realmente, huum, como posso dizer, errado? Bom, posso afirmar que vai de contra a proposta de ajudar.

Entretanto, eu não comento absolutamente nada em código. Então comentários estratégicos, pode ser interessante.

Sobre o padrão, eu já utilizo. Eu sempre tento padronizar nome de funções com o prefixo Handle seguido do que faz, algo como HandlePaste. Nesse sentido, aplico o mesmo em outras partes do código.

3
E, como é importante ler o código de outros programadores, me sinto um impasse e não sei como melhorar essa skill

Simples, pratique. Parece bobo o que eu vou falar e beira o óbvio, mas nunca é óbvio até alguém falar pra você. Eu comecei a programar há 14 anos atrás em C e C++, porém eu não acho que isso tenha favorecido em nada na minha bagagem, até porque eu comecei a trabalhar com pesquisa científica na faculdade, fiz Engenharia Elétrica, de 2017 a 2020. Porém só em 2020 que eu realmente comecei a trabalhar com programação de forma profissional. Então, no todo eu considero que eu tenho 4 anos de experiência.

E de 2020 para cá o que mudou foi que eu aprendi a programar lendo código de outras pessoas, pedindo feedback e fazendo mini projetos. Uma coisa que me ajudou muito foi tentar reproduzir ferramentas com meu próprio código, por exemplo uma função que lê uma imagem PNG ou JPEG. Parece simples, mas envolve muita matemática e técnicas de programação para atingir algo similar ao que se usa hoje em dia em bibliotecas prontas.

Saber ler código alheio é igual programar, não é o bootcamp ou o curso de 6 meses que vai te transformar em pleno ou sênior. É a prática, constante e consistente que vai te elevar para o próximo nível e, também, mostrar que você é um profissional que se destaca dos outros.

Duas histórias:

  1. Fiz um estágio (remoto por conta da pandemia) em 2020 em uma Universidade da Arábia Saudita. Era algo que eu nunca imaginei que iria conseguir e deu certo, eu trabalhava basicamente com um ramo de matemática relativamente novo que era mais teórico do que prático. Porém entrei de cabeça pra aproveitar a oportunidade. Em algumas reuniões, era terrível de entender o que o povo falava, mesmo eles falando em inglês por conta do sotaque. Mas no fim do primeiro mês do estágio (foram 6 meses), eu conseguia me comunicar melhor e entendê-los melhor. O que isso tem haver com leitura de código? Num primeiro momento nada. Mas, parando para observar da perspectiva de que eu pratiquei consitentemente, consegui me aprimorar.

  2. Em 2020 eu comecei a trabalhar com programação na Startup e dois veteranos meus, onde estou até hoje. Nosso foco era aplicar pesquisa científica, envolvendo IA e Visão Computacional, em projetos de Pesquisa e Desenvolvimento. Então o cliente possuía uma ideia e a gente implementava o que ele queria. Fizemos desde um VAR para Criquete até outras coisas mais mirabolantes. Nessa época eu penava muito para tentar entender o código que as pessoas desenvolviam, porque era como se eu estivesse aprendendo a ler os ideogramas em Chinês/Japonês. Um hábito que meu chefe, meu veterano, fez e que hoje eu aplico com o pessoal que é meu estagiário é: leia esse código que eu fiz (ou que fulano fez) e tente entender o que está acontecendo. Ele praticou comigo esse hábito desde que eu comecei a trabalhar e hoje consigo apontar problemas de maneira mais rápida. Novamente, prática consistente é a chave para qualquer coisa.

Se você quer emagrecer, entrar no shape, aprender uma nova língua, aprender a programar, e etc... É a prática consistente que vai fazer você alcançar o que você deseja.

Bom, essas útimas semanas eu parei ler códigos de repositórios relativamente popular como o heightlight.js e eu simplesmente não entendi nada...

Tudo no começo é difícil, cansativo e tedioso. Mas você só tem dois caminhos a seguir: desistir, ou continuar.

2

Muito interessante sua história! E meus parabéns pela as suas conquistas, poucos conseguem.

O que isso tem haver com leitura de código? Num primeiro momento nada. Mas, parando para observar da perspectiva de que eu pratiquei consitentemente, consegui me aprimorar.

Eu captei bem a mensagem. Da mesma forma que buscamos entender alguém pelo o seu idioma, gesto e escuta, buscamos entender o código de outra pessoas, pois de certa forma, também é uma forma de comunicação, mas com a maquina.

Muito obrigado por este comentário que tornou mais rico o meu poste. Eu certamente aprendi muito com este relato. Seguirei persistentemente praticando.

2

Sempre que preciso entender um código de terceiros, minha primeira ação é executá-lo dentro de um debugger e colocar um ponto de interrupção onde sei que é muito provável que encontre algo relevante para o que estou buscando e a partir daí avançar passo a passo. Dessa forma, consigo ver como a funcionalidade que me interessa foi implementada, linha por linha. Executar os testes dentro do depurador é especialmente útil.

1
1