Article image
Felipe Alves
Felipe Alves24/10/2023 22:48
Compartilhe

Desvendando o Código Limpo: Boas Práticas para Desenvolvedores

    "O único comentário verdadeiramente bom é aquele em que você encontrou uma forma para não escrevê-lo" - Robert C. Martin

    image

    Introdução:

    O desenvolvimento de software é uma arte e, assim como qualquer obra-prima, exige cuidado, atenção aos detalhes e uma visão clara. Em meio a essa busca pela perfeição, surge o conceito de "Clean Code" ou "Código Limpo" - uma filosofia que vai além da sintaxe correta, focando na legibilidade, simplicidade e eficiência do código. Este artigo explora o fascinante mundo do Clean Code, apresentando conceitos essenciais e exemplos práticos.

    O que é Clean Code?

    O Clean Code é mais do que um conjunto de regras. É uma mentalidade que preza pela clareza e simplicidade, tornando o código fonte compreensível não apenas para a máquina, mas principalmente para outros desenvolvedores. Quando bem aplicado, o Clean Code facilita a manutenção, reduz erros e melhora a colaboração entre membros da equipe.

    image

    Como relatado por Robert C. Martin em seu livro clássico, Clean Code, um Best Seller da nossa área, algumas práticas e visões são importantíssimas para mantermos a vida do nosso software.

    Regras gerais

    Siga as convenções

    Se você começou agora em um projeto ou acabaram de definir suas convenções, siga-as! Se utilizam por exemplo constantes em maiúsculo, enumeradores com E como prefixo, não importa! Siga sempre os padrões do projeto.

    KISS

    Mantenha as coisas simples! Este conceito vem até de outro livro, e particularmente acho que é a base de uma boa solução. Normalmente tendemos a complicar as coisas que poderiam ser muito mais simples.

    Então, Keep It Stupid Simple (Mantenha isto estupidamente simples - KISS)!

    image

    Regra do escoteiro

    "Deixe sempre o acamapamento mais limpo do que você encontrou!" O mesmo vale para nosso código. Devolva (Check in) sempre o código melhor do que você o obteve. Se todo desenvolvedor no time tiver esta visão, e devolver um pedacinho de código melhor do que estava antes, em pouco temos teremos uma grande mudança.

    Causa raiz

    Sempre procure a causa raiz do problema, nunca resolva as coisas superficialmente. No dia-a-dia, na correria, tendemos a corrigir os problemas superficialmente e não adentrar neles, o que muitas vezes causa o re-trabalho!

    Tente sempre procurar a causa raiz e resolver assim o problema de uma vez por todas!

    Regras de design

    Mantenha dados de configuração em alto nível

    Algo que toda aplicação tem são suas configurações, como as conhecidas ConnectionStrings. Tente sempre deixar estas configurações ou o parse delas em um nível mais alto possível.

    Evite sobrescrever configurações em métodos dentro de Controllers ou algo do tipo. Se possível, mantenha esta passagem no método principal, no início da aplicação e não mexa mais nisto!

    image

    Clean Code é uma filosofia de desenvolvimento cuja o principal objetivo é aplicar técnicas simples que visam facilitar a escrita e leitura de um código, tornando-o de fácil compreensão e revelando a sua real intenção.

    Engana-se quem pensa que a limpeza de código é algo complexo! Trocar o nome de uma variável por um melhor, converter funções grandes que fazem várias coisas para funções pequenas que fazem uma única tarefa, diminuir a complexidade do código reduzindo as regras condicionais — if — que ele possui, eliminar código duplicado e etc… Essas são algumas das coisas que podemos fazer para aplicar o conceito de clean code em nossos códigos.

    Um pouco de reflexão

    “ Qualquer um consegue escrever código que um computador entende. Bons programadores escrevem código que humanos entendem” — Martin Fowler

    image

    Princípios do Clean Code:

    1. Nomes Significativos:
    2. Utilize nomes que expressem claramente a intenção da variável, método ou classe. Evite abreviações desnecessárias.
    java
    
    int totalPaginas = livro.getPaginas(); 
    
    1. Funções Pequenas e Específicas:
    2. Crie funções que realizem uma única tarefa. Funções pequenas são mais fáceis de entender e testar.
    python
    
    def calcular_soma(a, b): return a + b 
    
    1. Comentários Suficientes, Código Autoexplicativo:
    2. Prefira um código que se explique por si só, mas quando necessário, use comentários curtos e claros.
    javascript
    
    const data = formatData(rawData); // Formata os dados brutos 
    
    1. Evite Duplicidade (DRY - Don't Repeat Yourself):
    2. Reduza a repetição de código, encapsulando lógicas comuns em funções ou classes.
    java
    
    
    void realizarTarefaImportante() { verificarConexao(); // ... código da tarefa 
    
    1. Testes Abrangentes:
    2. Inclua testes unitários para garantir que as mudanças no código não introduzam erros. Testes automatizados são parte integrante do Clean Code.
    3. Padrões de Projeto:
    4. Explore padrões de projeto que promovam a estruturação eficiente do código, como o Singleton, Factory, e outros.
    5. Refatoração Contínua:
    6. Aperfeiçoe o código regularmente. A refatoração melhora a estrutura sem alterar o comportamento, mantendo o código limpo ao longo do tempo.
    7. Princípio SOLID:
    8. Entenda e aplique os princípios SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) para criar código mais flexível e fácil de manter.

    Exemplos de Código Limpo:

    Java:

    java
    
    
    // Exemplo de Clean Code em Java public class Cliente { private String nome; private int idade; public Cliente(String nome, int idade) { this.nome = nome; this.idade = idade; } public String getNome() { return nome; } public int getIdade() { return idade; } } 
    

    Python:

    python
    
    
    # Exemplo de Clean Code em Python def calcular_media(valores): return sum(valores) / len(valores) if valores else 0 
    

    Simplicidade e concisão

    Outro princípio importante é a busca pela simplicidade e concisão. O código deve ser escrito da forma mais simples possível, evitando complexidade desnecessária. Isso significa evitar duplicação de código, seguir o princípio DRY (Don't Repeat Yourself), e utilizar abstrações adequadas para evitar soluções complexas. Código conciso é mais fácil de entender, testar e manter, tornando-o mais robusto e confiável.

    Testabilidade e cobertura

    A criação de módulos bem definidos e coesos é um princípio-chave de Clean Code. O código deve ser dividido em partes menores e independentes, com cada módulo responsável por uma única funcionalidade. Isso permite que o código seja reutilizado e mantido de forma mais eficiente, facilitando a colaboração entre desenvolvedores. Além disso, a coesão dentro de cada módulo garante que ele seja focado em uma única tarefa, tornando-o mais compreensível e testável.

    Comentários e documentação

    Apesar de se buscar um código autoexplicativo, Clean Code reconhece a importância dos comentários e da documentação adequada. Comentários devem ser utilizados para explicar o porquê de certas decisões e soluções técnicas, enquanto a documentação deve ser escrita para descrever a funcionalidade, o propósito e o uso das classes, métodos e variáveis. No entanto, é importante ressaltar que o código deve ser escrito de forma clara o suficiente para que os comentários não sejam a única fonte de compreensão.

    Se escrever um código limpo nos proporciona vários benefícios, por que nós nos deparamos com inúmeros códigos ruins? Temos diversas explicações pra isso, certo?

    • Os requisitos mudaram de forma expressiva;
    • O cronograma é apertado;
    • Estou sendo pressionado pra entregar mais rápido;
    • Vou fazer funcionar o básico, depois melhoro o resto…;
    • Etc…;

    Conclusão:

    Adotar o Clean Code não é apenas uma prática recomendada, mas uma necessidade para o desenvolvimento de software sustentável. Códigos limpos beneficiam não apenas quem os escreve, mas toda a equipe de desenvolvimento. Ao incorporar esses princípios em sua prática diária, você não apenas cria software funcional, mas verdadeiramente elegante.

    O Clean Code não é um destino, mas sim uma jornada contínua de aprendizado e melhoria. Ao priorizar a clareza e a simplicidade, você estará contribuindo para um código mais robusto e eficiente, elevando a qualidade do seu trabalho e o da sua equipe.

    Expansão:

    1. Documentação Efetiva:
    2. Além de comentários, crie documentação que descreva a arquitetura, os padrões de codificação e a lógica por trás das decisões de design.
    3. Análise Estática de Código:
    4. Utilize ferramentas de análise estática para identificar potenciais problemas no código antes mesmo da execução.
    5. Gestão de Dependências:
    6. Gerencie cuidadosamente as dependências do projeto para evitar conflitos e garantir uma integração suave.
    7. Cultura de Revisão de Código:
    8. Estabeleça uma cultura de revisão de código entre os membros da equipe para garantir a consistência e a qualidade do código.

    Referências:

    Martin, Robert C. "Clean Code: A Handbook of Agile Software Craftsmanship."

    McConnell, Steve. "Code Complete: A Practical Handbook of Software Construction."

    Fowler, Martin. "Refactoring: Improving the Design of Existing Code."

    MEDIOUM. #1 — Clean Code: O que é? Porque usar?: Clean Code: O que é? Porque usar? (https://medium.com). Acesso em: 24 out. 2023.

    BALTA.IO. Clean Code: Guia e Exemplos: Clean Code: Guia e Exemplos(https://balta.io/). Acesso em: 24 out. 2023.

    Compartilhe
    Comentários (0)