0

As regras do Código Limpo

Rosemeire Deconti
Rosemeire Deconti

Introdução

Tenho ouvido muito sobre a importância de ter um “Código Limpo”. Muito se recomenda a leitura do livro “Código Limpo” de Robert Cecil Martin. Então aqui está um resumo das regras que encontrei em minhas pesquisas sobre este assunto. Todas muito úteis e para aplicação imediata.


No final deste documento vocês encontram na referência os vários links utilizados para a criação deste artigo.


Como sempre desejo a todos bons estudos e sucesso!


Definição de Código Limpo

A melhor definição de Código Limpo que encontrei foi: “Código limpo é código fácil de entender e fácil de alterar.”


Fácil de entender significa

  • Fácil de ler pelo autor ou por outros desenvolvedores
  • Fácil de entender o fluxo de execução de toda aplicação
  • Fácil de entender como os diferentes objetos colaboram uns com os outros
  • Fácil de entender o papel e a responsabilidade de cada classe
  • Fácil de entender o que cada método faz
  • Fácil de entender qual é o propósito de cada expressão e variável

Fácil de alterar significa

  • Fácil de estender e refatorar o código
  • Fácil de corrigir bugs no código
  • Fácil de introduzir as alterações sem “quebrar” nenhuma funcionalidade
  • Fácil de testar com testes unitários já existentes e/ou fácil de escrever os testes
  •  Fácil de entender os testes


1. Regras gerais


1.1. Siga as convenções

Se o projeto tem convenções e por exemplo utilizam constantes em maiúsculo, siga sempre os padrões do projeto.


1.2. KISS (Keep It Stupid Simple)

“Mantenha isto estupidamente simples”, ou seja, manter a simplicidade e descartar a complexidade é realmente genial.


1.3. Regra do escoteiro

Esta regra diz: “Deixe sempre o acampamento mais limpo do que você encontrou!". Isto também vale para o código. Claro que realizando todos os testes necessários para não impactar outras partes do projeto e tendo a atenção de atender as entregas.


1.4. Causa raiz

Sempre procure a causa raiz do problema para que ele seja resolvido. Soluções superficiais somando gastam tempo sem agregar valor ao produto


2. Regras sobre entendimento do código


2.1. Seja consistente

Se você executa algo de uma forma, execute todo o resto desta mesma forma. Seja consistente na forma com que aplica o código. Siga sempre o padrão definido.


2.2 Utilize variáveis concisas

Opte por variáveis concisas, mesmo que resultem em um nome maior. Elas devem ser autoexplicativas, sem a necessidade de comentários ou informações adicionais.


3. Regras para os nomes


3.1. Escolha nomes descritivos

Escolher bons nomes para classes, variáveis e métodos é essencial para um código limpo. Lembre-se que se você precisa explicar seu código, então algo pode ser melhorado nele.


3.2. Faça distinções significantes

Utilize sempre nomes nos quais quem estiver lendo seu código possa diferenciar seu significado de outros possíveis nomes.


3.3. Utilize nomes “pronunciáveis” e “buscáveis”

Evite utilizar nomes difíceis de pronunciar ou inventar nomes e convenções para variáveis, classes e métodos. Lembre-se sempre da linguagem ubíqua (linguagem comum a todos os envolvidos) e da importância dela no código.


3.4. Evite uso excessivo de strings

Quem nunca perdeu horas procurando um BUG que era apenas um problema de comparação de string? Evite digitar a mesma string várias vezes, utilize constantes para isto.


3.5. Não use prefixo ou caracteres especiais

Não utilize prefixo com o tipo da variável, classe ou método e NUNCA use espaços ou caracteres especiais nestes itens.


4. Regras para funções ou métodos


4.1. Pequenas e com apenas um objetivo

Mantenha suas funções ou métodos o menor possível. É melhor ter métodos menores e reutilizáveis do que tudo dentro de um método só.


4.2. Utilize nomes descritivos

A mesma regra dos nomes anteriormente vista aqui se aplica para este cenário. Mantenha nomes concisos, sem caracteres especiais.


4.3. Opte por poucos parâmetros

Evite exigir muitos parâmetros para construção do objeto.


4.4. Cuidado com efeitos colaterais

Evite que uma função altere valores de outra classe sem ser a dela. Isto é chamado de efeito colateral.


4.5. Não tome decisões desnecessárias

Não utilize os famosos "FLAGS" para tomar decisões dentro dos métodos, divida-os em vários métodos ou até mesmo outras classes.


5. Regras de comentários


5.1. Um código bom é expressivo

Teoricamente, se você precisa comentar uma parte do seu código, é porque algo está errado com ele, ele não está expressivo o suficiente.


5.2. Não seja redundante

Evite comentários que não fazem sentido algum ao contexto ou cenário.


5.3. Não feche os comentários

Não há necessidade de fechar os comentários – polui menos o código.


5.4. Evite códigos comentados

Não deixe sujeira em seu código, ao invés de deixar algo comentado, remova ele. Hoje temos “versionadores” de código, você pode "voltar no tempo" facilmente.


5.5. Comentários sobre esclarecimento

Uso interessante para os comentários são esclarecimentos sobre o código e o processo a ser controlado – não sobre o comando a ser executado.


5.6. Comentários sobre consequências

Podemos utilizar comentários para alertar sobre trechos do código que podem ter consequências mais sérias.


6. Estrutura do código


6.1. Separe os conceitos verticalmente

Mantenha uma estrutura de pastas saudável e organizada. Não precisa criar uma pasta para cada arquivo, mas pode haver uma separação por contexto.


6.2. Declare variáveis próximas de seu uso

Não crie todas as variáveis juntas, no começo da class ou método, defina-as próximas de onde serão utilizadas.


6.3. Agrupe funcionalidades similares

Se uma função pertence a um grupo dentro de um objeto, mantenha-as sempre por perto.


6.4. Declare funções de cima para baixo

Ordenar as funções também é importante. Além da sua ordem de grandeza, suas assinaturas também devem ter uma boa organização.


6.5. Mantenha poucas e curtas linhas

Evite funções com linhas longas ou muitas linhas. Não existe um número correto, mas com certeza quanto mais código em uma função, mais difícil de mantê-la será.


6.6. Não use alinhamento horizontal

Não há necessidade de alinhar horizontalmente variáveis, constantes ou mesmo propriedades.


6.7. Use os espaços em branco corretamente

Utilize espaço em branco para associar ou não itens relacionados. Uma boa IDE já fará este trabalho por você.


6.8. Não quebre a indentação

Este item dispensa comentários. Um código não indentado não pode ser enviado para o projeto.


7. Testes


7.1. Cada teste deve tratar de apenas um tipo de função

Mais de uma função por teste pode confundir e comprometer a escrita do seu teste.


7.2. Devem ser legíveis

Trate seus testes como parte fundamental do seu código, não secundária. Os testes têm que ser organizados e bem escritos assim como o resto do seu software.


7.3. Devem ser rápidos

Um dos objetivos principais de um teste é cobrir uma pequena porção do nosso código. Normalmente estendemos esta ideia para a maior parte do código possível, ocasionando uma ampla gama de testes de unidade. Então os testes devem ser de rápida execução para não afetar o tempo do deploys da aplicação como um todo.


7.4 Deve permitir repetição

Devemos ter a possibilidade de repetir o mesmo teste, mas com parâmetros diferentes.


Conclusão

Todas as regras do Clean Code ajudam a diminuir o principal problema que os sistemas enfrentam: a manutenção. Facilita a vida do programador autor do código e de outros que necessitam manter o código. Menos tempo, menos custo e maior produtividade.


Referências

Clean Code - Guia e Exemplos | balta.io


KISS - Mantenha Isso Estupidamente Simples (thiengo.com.br)


Clean Code Summary and Key Points - DZone DevOps


What is Clean Code and why should you care? · Cvuorinen.net


Clean, high quality code: a guide on how to become a better programmer (butterfly.com.au)


Clean Code: habilidades práticas do Agile Software | mobicareofficial (medium.com)


Código Limpo: dicas práticas para turbinar a escrita, leitura e escalabilidade de um código | Zup


DevCast: Conheça o Code Smells (devmedia.com.br)

0
0

Comentários (31)

0
Alexsandro Silva

Alexsandro Silva

20/04/2021 11:55

Claro e objetivo, muito obrigado Rose!

0
Jean Nascimento

Jean Nascimento

18/04/2021 03:25

Excelente artigo, meus parabéns, gostei bastante!

0
Elton Lima

Elton Lima

17/04/2021 14:33

Rosemeire muito muito bom! Post de bastante valor!

0
Cesar Tavares

Cesar Tavares

16/04/2021 23:40

Parabéns, pelo artigo, par nós que estamos entrando nesta profissão é muito útil.

0
Rosemeire Deconti

Rosemeire Deconti

16/04/2021 17:03

Hewerton Moreira! Que bom que você gostou! Agora vamos codificar utilizando estes princípios! Bons estudos!


0
Rosemeire Deconti

Rosemeire Deconti

16/04/2021 17:01

@Eros M.Lima Muito grata por suas palavras! Bons estudos e ótimos hackatons!


1
Hewerton Moreira

Hewerton Moreira

16/04/2021 16:24

Esse é o melhor artigo sobre o assunto que já li até agora. Parabéns Rosemeire!!!

0
Ariosto Leal

Ariosto Leal

16/04/2021 03:26

Dicas otímas .

2
Ricardo Silva

Ricardo Silva

13/04/2021 10:17

Ótimo Resumo. Obrigado por compartilhar.

2
Gabriel Jesus

Gabriel Jesus

13/04/2021 10:41

Dicas perfeitas e muito essencial! Obrigado pelo resumo e dicas.

Apaixonada por tecnologia e informação. Na área desde 1.984 e sem previsão de parada.

Brasil