Código Limpo

Dicas para diminuir a quantidade de "What the Fuck por minuto" em seu código.

No início do livro "Clean Code", de "Robert C. Martin" existe a seguinte frase:

A única forma de se medir a qualidade de um código é a What the Fuck por minuto.

Problemas de um código sujo:

  • Custo para evolução e manutenção do código crescendo exponencialmente conforme a base de código aumenta, com muito tempo despendido em refatorações que não geram valor ao sistema, e em algum momento, o desejo de uma reescrita total do sistema.
  • Estresse, desânimo, baixa performance, trabalho em excesso, ansiedade, e no limite, o burnout dos desenvolvedores.
  • Risco elevado de efeitos colaterais (bugs) para cada modificação no código, que afetam o usuário final do sistema, podendo levar ao fracasso de um projeto num mundo digital onde as pessoas tem uma alta expectativa sobre a usabilidade e disponibilidade das aplicações que interagem em seus diversos dispositivos.

Aqui estão algumas boas práticas para escrever código limpo:

Automatize e use padrões:

Utilize padrões e ferramentas de análise estática de código para garantir a consistência e qualidade do código.
Automatize as verificações de padrões de código e inclua revisões de código como parte do processo de desenvolvimento.

Nomes são muito importantes:

Escolha nomes significativos para variáveis, funções, classes, módulos e outros elementos do código.
Priorize nomes claros e descritivos que reflitam o propósito e a função do elemento.

Funções devem ser pequenas:

Evite funções longas e divida-as em funções menores com responsabilidades claras.
Limite o número de parâmetros em uma função para evitar complexidade excessiva.

Comente apenas o necessário:

Escreva código legível e autoexplicativo que não exija muitos comentários.
Utilize comentários para explicar partes complexas do código, regex, operações matemáticas difíceis ou exceções em regras de negócio.

Mantenha um padrão de formatação:

Estabeleça convenções e diretrizes claras de formatação de código para garantir consistência em toda a base de código.
Evite estilos de formatação divergentes e padronize o código para facilitar a leitura e manutenção.

Seja o verdadeiro autor do código:

Escreva código com cuidado e atenção, demonstrando preocupação com a qualidade.
Deixe seu código limpo e legível para que outros possam entender e dar continuidade a ele.

DRY (Don't Repeat Yourself):

Evite repetição de código para reduzir a probabilidade de bugs e melhorar a manutenibilidade.
Utilize abordagens como compartilhamento de código, modularização e reuso para evitar duplicação.

Testes automatizados limpos:

Aplique os mesmos princípios de código limpo aos testes automatizados.
Escreva testes claros e organizados para facilitar a leitura e manutenção.

A regra do escoteiro:

Mantenha o código mais limpo do que você o encontrou, evitando deixar rastros de código desnecessário ou mal organizado.
Lembrando que essas são apenas algumas boas práticas para escrever código limpo, e é importante adaptá-las ao contexto e às necessidades do projeto.

Evite a complexidade excessiva:

Mantenha o código simples e evite a complexidade desnecessária.
Divida problemas complexos em partes menores e mais gerenciáveis.
Evite aninhamento excessivo de estruturas condicionais (if-else) e loops.

Teste e refatore regularmente:

Escreva testes unitários para verificar o comportamento correto do código.
Refatore o código regularmente para melhorar a estrutura, legibilidade e desempenho.
Testes automatizados e refatoração contínua ajudam a manter o código limpo e robusto.

Princípio da Responsabilidade Única (Single Responsibility Principle - SRP):

Cada classe ou função deve ter apenas uma responsabilidade claramente definida.
Isso ajuda a manter o código mais coeso, facilita a compreensão e a manutenção.

Princípio Aberto-Fechado (Open-Closed Principle - OCP):

As entidades de software (classes, módulos, etc.) devem ser abertas para extensão, mas fechadas para modificação.
Isso significa que o código deve ser projetado de forma que seja fácil adicionar novos recursos ou comportamentos sem alterar o código existente.

Princípio da Inversão de Dependência (Dependency Inversion Principle - DIP):

Os módulos de alto nível não devem depender diretamente de módulos de baixo nível, ambos devem depender de abstrações.
Isso promove um acoplamento mais fraco e facilita a substituição de implementações sem afetar outras partes do código.

Vantagens em se ter um código limpo:

Legibilidade e compreensão:

Um código limpo é mais fácil de ler e entender. As boas práticas de nomenclatura, estruturação e formatação tornam o código mais claro e legível, permitindo que desenvolvedores e membros da equipe compreendam mais facilmente o que está acontecendo.

Manutenibilidade:

Código limpo é mais fácil de manter e atualizar ao longo do tempo. Quando o código é organizado de forma coesa e bem estruturada, as modificações e correções de bugs podem ser feitas de maneira mais eficiente, reduzindo o tempo e o esforço necessários para realizar alterações.

Facilidade de colaboração:

Um código limpo facilita a colaboração em equipe. Quando o código é legível e segue convenções e padrões comuns, os membros da equipe podem trabalhar juntos de forma mais eficaz, revisar o código uns dos outros e entender o trabalho realizado por colegas.

Redução de bugs:

Código limpo reduz a probabilidade de introdução de erros e bugs. A clareza e a organização do código tornam mais fácil identificar possíveis problemas e facilitam a depuração e o teste.

Escalabilidade:

Um código limpo é mais fácil de escalar e evoluir. Quando o código é estruturado de forma modular e bem organizada, a adição de novos recursos ou funcionalidades se torna mais simples e menos propensa a causar efeitos colaterais indesejados.

Performance e eficiência:

Um código limpo pode ter um desempenho melhor. O código bem escrito e otimizado é mais eficiente, evitando práticas desnecessárias ou ineficientes que possam afetar o desempenho do aplicativo.

Reutilização de código:

Um código limpo promove a reutilização de código. Quando o código é modular e bem organizado, é mais fácil identificar e extrair partes reutilizáveis, economizando tempo e esforço ao desenvolver novos recursos ou projetos.

Satisfação e orgulho:

Código limpo pode aumentar a satisfação do desenvolvedor e promover um senso de orgulho no trabalho realizado. Um código bem escrito e limpo reflete um alto nível de profissionalismo e habilidade técnica.

Em resumo, um código limpo traz benefícios significativos para os desenvolvedores, as equipes de desenvolvimento e os projetos em geral, resultando em um desenvolvimento mais eficiente, manutenção simplificada e maior qualidade do software.

Grande abraço! 

 Para saber mais: