image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Nana Medeiros
Nana Medeiros26/10/2023 13:48
Compartilhe

Aprenda de forma fácil o conceito de Clean Code ou Código Limpo

  • #Arquitetura de Sistemas

“O código limpo é simples e direto. Código limpo parece uma prosa bem escrita. Código limpo nunca obscurece a intenção do designer, mas é completo de abstrações nítidas e linhas simples de controle.”

Essas são as palavras do Grady Booch, Cientista de Engenharia de Software da IBM Research. 

Nada mais desafiador do que passar horas tentando decifrar um código, não é? Pior ainda quando isso não tem a ver com a complexidade do projeto e sim porque o código é mal feito, desorganizado ou não demonstra com clareza a sua finalidade ou objetivo. 

Por isso, atualmente temos um conceito chamado Clean Code, código limpo em português, onde o objetivo é facilitar a compreensão do que deve ser feito e também ajudar na flexibilidade das alterações, caso seja necessário. 

Por isso, o Código Limpo é um conjunto de técnicas que preza por boas práticas de usabilidade. Para cumprir essa proposta, essa formatação precisa ser simples, legível e fácil de ser manipulada. Atributos que qualquer programador adora, não é mesmo? 

Entenda mais sobre este conceito e demais princípios, continuando a ler esse artigo, tenho certeza de que juntos iremos aprender ainda mais. Fico feliz se você compartilhar comigo dúvidas e curiosidades sobre esse conceito. 

Quando surgiu o Clean Code? 

É sabido que os desenvolvedores passam mais tempo tentando entender um código do que propriamente criando ou escrevendo. 

Dito isso, o termo Clean Code foi criado por Robert C. Martin, conhecido como Uncle Bob, autor do livro “Clean Code: A Handbook of Agile Software Craftsmanship” para ensinar e conceituar tudo que foi dito acima. Lançado em 2008 e facilmente encontrado em português com o título “Código Limpo: Habilidades Práticas do Agile Software” (fiquem em paz, colocarei ao final deste artigo mais livros que abordam o mesmo assunto para praticarmos). 

De acordo com Robert Martin, esta prática de código torna o projeto mais escalável e ainda facilita o workflow do desenvolvedor, uma vez que é muito mais prático trabalhar de maneira simples, concorda? Vale lembrar que simplicidade não tem a ver com furos de segurança, uma vez que o código limpo é altamente seguro. 

Para além disso, o objetivo principal é evitar prejuízos, ou seja além de ser manipulável, simples e elegante, ele é eficaz. 

Vale lembrar que Robert Martin é autor/co-autor de grandes livros que ajudam na rotina de trabalho de programadores e profissionais que precisam lidar com múltiplos projetos, são eles: Manifesto Ágil (que aborda diversas metodologias ágeis, como o SCRUM e FDD — Feature-Driven Development), Arquitetura Limpa, Codificador Limpo, entre outros. 

Quais são as boas práticas do Código Limpo? 

No livro, são exemplificadas algumas boas práticas para a realização correta do Clean Code, ou Código Limpo, como conhecemos. 

Aqui estão algumas delas: 

Boa nomenclatura - escolha bons nomes para o seu código

Esse é um dos conceitos principais para o que estamos aprendendo. Os nomes são as chaves para o bom entendimento do projeto ou software, por isso ele precisa ser claro e entendível para todes e também para o que se destina, seja variável, função, parâmetro, classe ou método. 

Se precisar que o nome seja extenso, não tem problema, você pode fazê-lo desde que continue com o princípio de clareza e objetividade que o Código Limpo dispõe. 

Por exemplo: evite palavras que geram conflitos de linguagem, coloque nomes de comando “PrintTela”, “ExcluirPagina”, “NomePessoa”. Pense na seguinte questão: crie um nome que seja facilmente compreendido para que assim que o desenvolvedor bata o olho, ele já entenda do que se trata. 

Lembre-se também de seguir padrões em sua nomenclatura, se iniciou de um jeito… termine do mesmo. 

Ah, Don’t Repeat Yourself… essa expressão apareceu no livro The Pragmatic Programmer e se aplica ao banco de dados, testes, documentação, codificação etc. Ele explica que não podem existir duas partes do código que querem dizer a mesma coisa ou fazer a mesma função. 

Marie Kondo da programação

Quem já assistiu a série Marie Kondo da Netflix sabe do que estou falando. Guru da organização, a Marie deixa tudo limpo e organizado como ninguém. E é justamente isso que precisamos fazer em nossos códigos. 

Sempre volte no código para deixá-lo o mais sucinto e objetivo possível. Cada vez que reler, tire algo que não seja necessário, nós temos a mania de falar demais, será que fazemos isso com os nossos códigos também? Esteja atento de não remover algo que seja imprescindível para o projeto, lembre-se que o objetivo é facilitar. 

Tratamento de erros

Já estamos acostumados com os erros durante o processo, mas um bom desenvolvedor precisa garantir que o código irá funcionar mesmo com alguns empecilhos. Por isso, o tratamento de erros deve ser feito para garantir o funcionamento do software e também exibir mensagens educativas sobre o que foi encontrado. 

Faça testes

Da mesma forma do tratamento de erros, realizar teste é imprescindível para o bom funcionamento do software, arrisco dizer obrigatório, já que sem os testes não seria possível saber o que está ou não funcionando no projeto. 

Teste tudo, a todo tempo. 

A metodologia Código Limpo também atua nesta boa prática, ou seja, os conceitos se retroalimentam. O seu teste precisa ser realizado com pouco código, depurando pequenos blocos para ter maior agilidade e visão sobre cada trecho, de forma independente. Nada de realizar teste no código inteiro, assim o trabalho continuará sendo complexo e sujo, o contrário do que queremos. 

É interessante que exista um ambiente de testes de código fonte em paralelo para validação do código ser realizada o quanto for necessário para o bom procedimento do projeto. 

Confira algumas regras descritas no livro do Robert Martin: 

  • Rápido: o teste precisa ser rápido para que seja realizado repetidas vezes. 
  • Independente: cada trecho precisa ser independente para que não ocorra efeito dominó quando for testado ou executado. Somente um problema pode pôr em risco todo o código, então separe por blocos. 
  • Repetível: deve ser repetido de várias formas e em ambientes diferentes. 
  • Autovalidação: é preferível que as respostas dos testes voltem em Verdadeiro ou Falso, assim os erros não se tornam subjetivos. 

Comente somente o que for preciso

“Comentários mentem”, é o que afirma Robert Martin em seu livro. 

Por isso, faça comentários apenas quando for altamente necessário, pois o código sempre é alterado e os comentários não, então muitas vezes eles ficam defasados em relação ao código ali presente, atrapalhando a sua funcionalidade. 

Não utilize prefixos 

Utilizar prefixo não é uma boa ideia se você quer ter um código limpo, uma vez que isso pode mais atrapalhar do que ajudar, uma vez que nem sempre ele será compreendido da maneira que deseja. 

Confira alguns exemplos fornecidos pelo blog Be Trybe:

Não prefixe p para ponteiro, ch para caractere.

Não prefixe interfaces com I, enums com E etc.

Não prefixe os campos com i_ ou m_ ou s_.

Exemplo:

caractere **ppc; //Ruim

char **argument Values ​​//Bom

SOLID Design

Essa prática contribui para o funcionamento e manutenção do código à medida que o projeto aumenta, ela tem como objetivo evitar problemas de código, refatoração e adotar metodologia ágil ao projeto. 

Cada letra tem seu significado, SOLID significa:

Single-responsibility Principle (Princípio da responsabilidade única)

Open-closed Principle (Princípio do aberto-fechado)

Liskov Substitution Principle (Princípio da substituição de Liskov)

Interface Segregation Principle (Princípio da segregação de interfaces)

Dependency Inversion Principle (Princípio da inversão de dependência)

Agrupe funções parecidas no mesmo ambiente

Quanto mais variáveis, maior o código. Por isso, faça um agrupamento no início da página para facilitar o entendimento e mantenha, ao longo do código, todas as funções similares no mesmo lugar. Assim fica muito mais fácil de entender o projeto. 

Veja alguns exemplos de código limpo criados pelo Chat GPT

Aqui estão três exemplos de princípios de Código Limpo. 

image

Python - Nomes Descritivos Significativos

No exemplo de código limpo, as variáveis e funções têm nomes descritivos que indicam claramente o que estão fazendo, tornando o código mais legível.

# Exemplo não limpo:

def f():

    x = 5

    y = 10

    return x + y

# Exemplo de código limpo:

def calcular_soma():

    valor1 = 5

    valor2 = 10

    return valor1 + valor2

JavaScript - Funções Pequenas e Focadas

Dividir uma função grande e complexa em funções menores, cada uma com uma única responsabilidade, torna o código mais fácil de entender e de manter.

// Exemplo não limpo:

function processarPedido(pedido) {

    // Lógica complexa de processamento de pedido

    // ...

}

// Exemplo de código limpo:

function validarPedido(pedido) {

    // Lógica de validação do pedido

    // ...

}

function calcularTotal(pedido) {

    // Lógica de cálculo do total

    // ...

}

Java - Comentários Significativos

Comentários bem colocados explicam a finalidade e o contexto do código, tornando-o mais claro para outros desenvolvedores que podem precisar trabalhar nele no futuro.

// Exemplo não limpo:

int resultado = calcular(idade, salario, true);

// Exemplo de código limpo:

// Calcula o bônus com base na idade e no salário, aplicando o ajuste para novos funcionários.

int bonus = calcularBonus(idade, salario, true);

5 livros sobre Código Limpo, ou Clean Code, para ler e aprender

  • Clean Code - A Habilidade Essencial para o Desenvolvedor Moderno, do autor Robert C. Martin;
  • Clean Architecture: Um Guia Prático para Desenvolvedores e Designers, do autor Robert C. Martin;
  • O Programador Pragmático: Sua Jornada para se Tornar um Excelente Desenvolvedor, dos autores Andrew Hunt e Dave Thomas; 
  • Refatoração: Aperfeiçoando o Design de Código, do autor Martin Fowler; 
  • Projeto Limpo: Best Practices, do autor Robert C. Martin;

Espero que esse artigo tenha sido útil para seu aprendizado e vamos juntos nessa jornada desenvolvedora.

Compartilhe
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (1)
Talita Santos
Talita Santos - 27/10/2023 00:34

Obrigada Nana, por nos trazer estas informações!