Precisamos falar sobre Clean Code

   

image.png

   (ref: https://www.freecodecamp.org/portuguese/news/clean-code-explicado-um-guia-pratico-para-iniciantes/)

    

Já vou iniciar essa publicação ressaltando que tudo o que está descrito aqui é embasado na ~~MINHA OPINIÃO~~, com base na minha experiência profissional e nos estudos que realizei ao longo do tempo. Esse conteúdo não representar um consenso absoluto, mas sim a forma como enxergo o tema. Por isso, convido você a compartilhar sua opinião nos comentários do LinkedIn.

    

Antes do Clean Code…

    

Antes de entrar em todos os detalhes sobre Clean Code, é importante lembrar que adotar práticas simples como DRY, KISS e YAGNI já vai fazer uma grande diferença no dia a dia. Se cada desenvolvedor se preocupar em não repetir código desnecessariamente, em manter as coisas simples e em não tentar antecipar demais o que pode ser necessário no futuro, o impacto será imediato. Isso facilita a vida de todos na equipe e, com o tempo, torna o processo de desenvolvimento muito mais leve e colaborativo. Comece por aí, e com certeza o trabalho vai fluir bem melhor! Sei que muitas vezes você está apagando incêndios no trabalho, mas pense no coleguinha, um dia ele vai precisar fazer manutenção no seu código.

    

Sobre o Clean Code…

     

O conceito é simples: “Clean Code é um conjunto de boas práticas para escrever códigos mais legíveis, manuteníveis e eficientes. O conceito foi popularizado pelo livro Clean Code: A Handbook of Agile Software Craftsmanship, de Robert C. Martin (Uncle Bob).”

     

Novamente embasado na ~~MINHA OPINIÃO~~, o principio que acredito ser o coração da ideia é o: !FAÇA CÓDIGO PENSANDO NOS OUTROS DESENVOLVEDORES!. Isso significa que um código limpo não é apenas aquele que funciona, mas sim aquele que pode ser facilmente compreendido, modificado e expandido por outros desenvolvedores no futuro. Escrever código pensando nos outros envolve adotar uma nomenclatura clara, evitar complexidade desnecessária e sempre buscar a simplicidade sem comprometer a funcionalidade. Afinal, um código que só o autor entende não é um código eficiente, mas sim um problema em potencial para a equipe.

      

Falando de princípios, aqui estão os outros:

  • Simplicidade: Evitar complexidade desnecessária. Código simples é melhor que código complicado.
  • Nomeação Significativa: Variáveis, funções e classes devem ter nomes descritivos e intuitivos.
  • Pequenas Funções: Cada função deve fazer apenas uma coisa e fazê-la bem.
  • Redução de Comentários: Comentários devem ser usados apenas quando realmente necessários. Um código bem escrito deve ser autoexplicativo.
  • Eliminação de Código Morto: Remover código não utilizado ou desnecessário.
  • Evitar Repetição (DRY - Don’t Repeat Yourself): Evitar duplicação de código, utilizando abstrações adequadas.
  • Uso Consistente de Estruturas: Seguir padrões e convenções da equipe ou da linguagem usada.
  • Tratamento de Erros Elegante: Usar exceções e evitar retornos ambíguos ou código difícil de entender.
  • Testabilidade: Código deve ser fácil de testar, com funções e classes bem isoladas.

 

Vamos de exemplos

  

Usarei exemplos mesquinhos mas que minimamente acenderão as lamparinas do juízo independentemente da complexidade do seu projeto.

 

image.png

(ref: https://www.freecodecamp.org/news/how-to-write-clean-code-tips-for-developers/)

 

1️⃣ Nomes Significativos:

Princípio: Use nomes descritivos e intuitivos para variáveis, funções e classes.

 

Código Ruim (Nomes genéricos e confusos)

 

image.png

 

Código Limpo (Nomes claros e descritivos)

 

image.png

 

2️⃣ Funções Pequenas e Objetivas:

Princípio: Cada função deve fazer apenas uma coisa e fazê-la bem.

 

Código Ruim (Função faz múltiplas coisas)

 

image.png

 

Código Limpo (Funções pequenas e focadas em uma única responsabilidade)

 

image.png

 

3️⃣ Evite Comentários Desnecessários

 Princípio: Prefira código autoexplicativo a comentários excessivos.

 

Código Ruim (Comentário explicando o óbvio)

image.png

 

Código Limpo (Código autoexplicativo, sem necessidade de comentário)

 

image.png

 

4️⃣ Evitar Código Morto

Princípio: Remova código não utilizado para evitar confusão e poluição do código.

 

Código Ruim (Código morto presente)

 

image.png

 

Código Limpo (Código antigo removido)

 

image.png

 

5️⃣ Evite Repetição (DRY - Don't Repeat Yourself)

Princípio: Evite duplicação de lógica extraindo funções reutilizáveis.

 

Código Ruim (Duplicação de código)

 

image.png

 

Código Limpo (Extração de função comum)

  

image.png

 

6️⃣ Uso Consistente de Estruturas

Princípio: Siga padrões e convenções da linguagem.

 

Código Ruim (Mistura de estilos e convenções diferentes)

  

image.png

  

Código Limpo (Padrões e convenções corretos)

  

image.png

  

7️⃣ Tratamento de Erros Elegante

Princípio: Use exceções para evitar retornos ambíguos.

  

Código Ruim (Retorno sem significado claro)

    

image.png

    

Código Limpo (Lançamento de exceções para melhor controle de fluxo)

    

image.png

    

8️⃣ Testabilidade e Modularidade

Princípio: Código deve ser fácil de testar e reutilizar.

    

Código Ruim (Função faz chamadas diretas, difícil de testar)

    

image.png

    

Código Limpo (Isolação da lógica para facilitar testes)

    

image.png

    

Artigos Relacionados