Clean Code, o que é e como nos ajuda?
Published: 2021-12-03 00:16:35

Faaala pessoal, sou eu novamente, dessa vez para falar um pouco sobre Clean Code!

Então sem muita perda de tempo, bora lá!

Quem é programador certamente já se deparou com um código ruim, mal feito e que não demonstrava efetivamente sua função. Esse cenário é mais comum do que se imagina e é justamente o que o Clean Code busca combater. 

Clean Code, ou Código Limpo, é uma filosofia de desenvolvimento de softwares que consiste em aplicar técnicas simples que facilitam a escrita e a leitura de um código. Tornando-o, assim, de fácil compreensão.

![Clean code](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/chmue9ooqbshz6etrsyh.jpg)

>“ Aprender a criar códigos limpos é uma tarefa árdua e requer mais do que o simples conhecimento dos princípios e padrões. Você deve suar a camisa; praticar sozinho e ver que cometeu erros; assistir os outros praticarem e errarem; vê-los tropeçar e refazer seus passos; Vê-los agonizar para tomar decisões e o preço que pagarão por as terem tomado da maneira errada. ”

A nota acima foi escrita por Robert C. Martin, em seu livro: >“Clean Code: A Handbook of Agile Software Craftsmanship”

![Livro](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8cp8vcciki2ixwbmu9l6.PNG)

[Você pode comprar ele por aqui](https://www.amazon.com.br/gp/product/8576082675/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=8576082675&linkCode=as2&tag=joaoroberto02-20&linkId=e79e06fa5bf262aad01761357d3dd453)

###Quando surgiu o termo Clean Code?

Uncle Bob, ou Robert C. Martin, conseguiu perceber que o gargalo principal no desenvolvimento de software estava justamente na manutenção. Ou seja, um código mal escrito desde a sua primeira versão pode funcionar mas vai gerar prejuízos enormes.

O termo se disseminou pela comunidade de uma forma praticamente unânime. E um dos motivos pode ser justificado no seguinte dado: a proporção média de leitura e escrita de códigos fonte é de 10 para 1. Isso significa que as pessoas passam mais tempo tentando entender os códigos existentes do que efetivamente escrevendo novos códigos.

Com essa informação, é possível perceber que, muito além de uma boa arquitetura e boas práticas computacionais, o código fonte – que é aquilo que faz o computador executar nossos comandos – precisa de princípios. E é justamente isso que o Clean Code traz.

###Tá, mas por que eu devo usar isso?

>“ Alguma vez um código ruim já lhe atrasou consideravelmente? Se você for um programador, independente de sua experiência, então já se deparou várias vezes com esse obstáculo ”

A produtividade de um programador está diretamente ligada a qualidade do código em que ele trabalha. Por isso, realizar a manutenção de um software é bem mais complicado do que desenvolver um do início. Os programadores passam a maior parte do tempo lendo e entendo o código do que programando.

É impossível escrever um código sem lê-lo, constantemente lemos um código antigo quando estamos criando um novo. Por isso, escrever um código que facilite a leitura é de suma importância. Se você quiser ser um programador melhor e mais produtivo, não há como escapar, comece escrevendo um código mais limpo.

###Mas então que regras devo seguir?

####Nomes são muito importantes!

A definição de nome é essencial para o bom entendimento de um código. Aqui, não importa o tipo de nome, seja ele:

- Variável;
- Função;
- Parâmetro;
- Classe;
- Método.

#####Ao definir um nome, é preciso ter em mente 2 pontos principais:

1. Ele deve ser preciso e passar logo de cara sua ideia central. Ou seja, deve ir direto ao ponto;
2. Não se deve ter medo de nomes grandes. Se a sua função ou parâmetro precisa de um nome extenso para demonstrar o que realmente representa, é o que deve ser feito.

####Regra dos escoteiros!

Há um princípio do escotismo que diz que, uma vez que você sai da área em que está acampando, você deve deixá-la mais limpa do que quando a encontrou.

Trazendo a regra para o mundo da programação, a regra significa **deixar o código mais limpo do que estava antes de mexer nele.**

####Don't repeat yourself! (DRY)

Esse princípio pode ser traduzido como “não repita a si mesmo”. Essa expressão foi descrita pela primeira vez em um livro chamado ***The Pragmatic Programmer*** e se aplica a diversas áreas de desenvolvimento, como:

- Banco de Dados;
- Testes;
- Documentação;
- Codificação.

O DRY diz que cada pedaço do conhecimento de um sistema deve ter uma representação única e ser totalmente livre de ambiguidades. Em outras palavras, define que não pode existir duas partes do programa que desempenhem a mesma função.

####Comentários...

Esse princípio afirma que comentários podem ser feitos, porém, se forem realmente necessários. Segundo Uncle Bob, os comentários mentem. E isso tem uma explicação lógica.

O que ocorre é que, enquanto os códigos são constantemente modificados, os comentários não. Eles são esquecidos e, portanto, deixam de retratar a funcionalidade real dos códigos.

Logo, se for para comentar, que seja somente o necessário e que seja revisado juntamente com o código que o acompanha.

####Tratamento de erros

Tem uma frase do autor Michael Feathers, muito conhecido na área de desenvolvimento, que diz que as coisas podem dar errado, mas, quando isso ocorre, os programadores são os responsáveis por garantir que o código continuará fazendo o que precisa.

Ou seja: saber tratar as exceções de forma correta é um grande e importante passo para um programador em desenvolvimento.

####Testes limpos!

Testar, na área de programação, é uma etapa muito importante. Afinal, um código só é considerado limpo após ser validado através de testes – que também devem ser limpos.

Por isso, ele deve seguir algumas regras, como:

- **Fast**: O teste deve ser rápido, permitindo que seja realizado várias vezes e a todo momento;
- **Independent**: Ele deve ser independente, a fim de evitar que cause efeito cascata quando da ocorrência de uma falha – o que dificulta a análise dos problemas;
- **Repeatable**: Deve permitir a repetição do teste diversas vezes e em ambientes diferentes;
- **Self-Validation**: Os testes bem escritos retornam com as respostas true ou false, justamente para que a falha não seja subjetiva;
- **Timely**: Os testes devem seguir à risca o critério de pontualidade. Além disso, o ideal é que sejam escritos antes do próprio código, pois evita que ele fique complexo demais para ser testado.

###Conclusão

O Clean Code é um conceito que veio para ficar. Afinal, seus princípios solucionam com eficácia um dos principais problemas que grande parte dos projetos de sistemas enfrentam: a manutenção.

Conforme nós utilizamos as práticas do Clean Code, nós produzimos ou ampliamos uma habilidade citada no livro, como ***“sensibilidade ao código”***. Este termo se refere à capacidade de visualizar um código mal escrito e imediatamente pensar em diferentes formas de limpá-lo ou refatorá-lo.

Até a próxima pessoal!