Interpretação e Legibilidade em Programação
Tags: webdev, programming, documentation, javascript
Published: 2024-03-02 15:37:16

**Interpretação e legibilidade na programação.**

Já se deparou com um bloco de código e pensou: "O que estou fazendo da minha vida?", principalmente se foi um código que você mesmo escreveu? Nossa conversa desta semana é sobre a legibilidade do seu código. Gostaria de lembrar que esta é a perspectiva de um programador iniciante.

**Aprendendo a Interpretar Código**

Como pode ver nas imagens abaixo, uma representa um código básico que escrevi, mas que mesmo assim eu não estava entendendo nada, mesmo estando funcional. Pensei comigo mesmo: "De que adianta um código funcional, se o desenvolvedor por trás dele não o entende?" Então, decidi estudá-lo até entendê-lo, o que não é uma tarefa fácil quando se está sozinho. Resolvi usar o básico, que sempre usei ao estudar... ESCREVER. Quando nós escrevemos, estamos forçando nosso cérebro a processar uma informação para que ela seja compilada na folha de papel. Não é apenas copiar, mas sim entender onde vai cada elemento. Claro que você precisa ler e reler quantas vezes for necessário, mas uma hora ou outra, tenho certeza de que vocês vão conseguir. Dá para ver que o tempo que passei entendendo o processo da lógica não foi pouco.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u310jox5i1opb6ohsok8.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0utwmwlhvgpc0r22e09k.jpeg)

## A Arte da Interpretação

Este é o primeiro ponto que quero levantar com vocês... INTERPRETAÇÃO. Esta ferramenta tem um papel muito importante na vida de qualquer um que trabalhe na área de tecnologia. Entender como o código se comporta é essencial para nos ajudar a trabalhar com seus pormenores, como documentação, otimização, manutenibilidade, promovendo mais sustentabilidade para o seu software ou website, garantindo que ele dure por muito tempo. Para conseguir melhorar na interpretação, uma sugestão é quebrar o código em pedaços menores, e ir por partes ou dividir para conquistar (Já ouviu essas duas coisas em algum lugar?). De fato, a divisão de um bloco maciço em blocos menores é uma ótima opção para quem está perdido, e com o passar do tempo, à medida que você, programador(a), expõe o seu cérebro, você vai evoluir na mesma proporção, interpretando o seu código e dos outros com muito mais facilidade e rapidez.

## Código Autodocumentado: O Santo Graal da Legibilidade

Agora, como podemos tornar nosso código mais compreensível tanto para nós quanto para outras pessoas? Vamos discutir o conceito de "código autodocumentado", fortemente abordado por Steve McConnell, em seu livro "Code Complete".

Steve McConnell disse em seu livro "Code Complete" (2004): "Um bom código é a sua melhor documentação. Se o código for ruim o suficiente para exigir comentários extensos, tente primeiro melhorar o código para que ele não precise de comentários extensos."

Com isso, o autor quis dizer que se o código escrito for suficientemente claro e explicativo, dispensa a necessidade de documentação à parte. Vamos imaginar o nível que isso pode chegar, simplesmente um código ou aplicação que não seja necessário nenhum tipo de orientação para ser usado. Parece algo muito difícil, se não impossível de se alcançar, seria como o santo graal da legibilidade de acordo com seu livro.

## Legibilidade e Documentação

Isso não quer dizer que McConnell desencoraje completamente a escrita de documentação, pelo contrário, em seu livro ele também dá algumas dicas sobre diretrizes gerais para documentação de arquivos.

O código tem a solução, o conhecimento por trás dele pode ser deduzido por comentários, no entanto, sem uma orientação, nunca será verdadeiramente alcançado.

Steve McConnell também disse em "Code Complete" (2004): "Os comentários são mais fáceis de escrever mal do que bem, e comentar pode ser mais prejudicial do que útil."

## A Importância da Organização e do Conhecimento Técnico

E agora, será que saber sobre organização é o suficiente? Não é preciso ser um perito para saber que não! Não é suficiente entender como melhorar a organização do código se você não possui o conhecimento técnico, a outra parte dessa equação. Uma boa analogia que poderíamos abordar é a de um músico, um violinista ou pianista, por exemplo. Para compor uma boa sinfonia, não bastaria saber apenas a organização das notas, seria necessário também muito conhecimento técnico sobre harmonia, afinação, tempos, etc.

Um bom conhecimento técnico vai fazer você conseguir reconhecer o que realmente funciona em cada cenário, às vezes o que funciona para certa tecnologia, não funciona para outra, o que funciona no cenário 1, não funciona no 2, e o contrário também. É importante que você saiba identificar o melhor padrão para aplicação, assim vai ser mais fácil visualizar potenciais pontos problemáticos neste cenário.

Quando você conseguir juntar essas duas coisas, organização e conhecimento, você será capaz de criar sistemas mais tolerantes à mudança e, como dito no começo, fará com que ele dure por mais tempo sem sofrer grandes alterações.

## Práticas para Melhorar a Legibilidade do Código

Aqui estão algumas práticas para deixar o código mais legível e autodocumentado:

1. Escreva de forma clara e explicativa.
2. Tente melhorar o código antes de adicionar comentários extensos.
3. Mantenha um diálogo consigo mesmo durante todo o processo de desenvolvimento.
4. Se coloque no lugar de alguém que não seja você e pense, “o que não é óbvio logo de cara?”
5. Desenvolva seu conhecimento técnico para reconhecer o que realmente funciona em cada cenário.
6. Identifique o melhor padrão para aplicação.
7. Pratique a leitura de artigos e livros sobre o assunto diariamente.
8. Tente interpretar o código de outras pessoas.
9. Busque a ajuda de um mentor.

Referências:

- Whitney,D.(2.feb.2021).Writing good code by understanding cognitive load:https://dev.to/david_whitney/writing-good-code-by-understanding-cognitive-load-5a85

- Mello,M.(21.jan.2023).Translating Code: The Importance of Compilation and Interpretation:https://dev.to/msmello_/translating-code-the-importance-of-compilation-and-interpretation-8g2

- Kelly,A.(3.Apr.2023).Code comprehension: an underrated skill:https://dev.to/andrewkelly/code-comprehension-an-underrated-skill-21oe

- Shrestha,P.(14.mar.2017)Code Comprehension:https://www.linkedin.com/pulse/code-comprehension-prayas-shrestha/

Gratidão, Até a próxima!