Article image

RP

ROBERTO PEREIRA26/10/2023 21:19
Compartilhe

Construindo um Código Intuitivo: Entendendo Clean Code

  • #Arquitetura de Sistemas

INTRODUÇÃO AO CLEAN CODE

 A escrita de código é uma arte que acaba se tornando fundamental para um bom programador, e como toda arte, requer uma atenção meticulosa aos detalhes, que muitas vezes nos foge a primeira vista.

Então quando se trata de desenvolvimento de software, a formatação do código desempenha um papel indispensável para a manutenção do mesmo, afinal sem um código limpo, se torna muito difícil trabalha-lo

Para isso entra o Clean Code, escrever código limpo não se resume apenas à escolha de nomes significativos; a forma como o código é formatado também é de extrema importância.

Neste artigo, vamos mergulhar fundo nas "Boas Práticas de Formatação de Código". Você aprenderá por que a formatação adequada é essencial, quais são as melhores práticas para manter um código bem formatado e como aplicar esses princípios em seu próprio trabalho de desenvolvimento de software. Assim conseguindo criar um bom código limpo e apresentável, onde não irá se perder.

Sendo assim neste artigo iremos abordar os seguintes tópicos: 

  1. A Importância De um Clean Code
  2. Convenções de Formatação
  3. Estilo de Código
  4. Ferramentas de Estilo Automatizadas
  5. Nomes de Variáveis e Funções
  6. Comentários e Documentação
  7. Lidando com Erros de Formatação

1 - A IMPORTÂNCIA DO CLEAN CODE.

image

           Uma das muitas responsabilidades que você profissional que se dedicou a programação, será realizar manutenções em sistemas. Essa tarefa envolve a análise e compreensão de extensos trechos de código fonte criados por outros desenvolvedores. A execução dessa atividade pode se tornar consideravelmente mais simples quando o desenvolvimento inicial segue as diretrizes das boas práticas de programação.

O "Clean Code," ou código limpo, é uma abordagem que estabelece um conjunto de princípios e orientações que visam a facilitar a compreensão, a escrita e a manutenção do código por parte dos desenvolvedores. Abaixo segue alguns dos benefícios que se tem, por adotar a politica do Clean Code.

  • Reduz o número de manutenções e otimiza melhorias futuras;
  • Reduz o risco de erros e bugs;
  • Acelera as entregas dos códigos;
  • Auxilia na retenção do cliente;
  • Melhora a experiência da pessoa usuária (UX) com o produto final;
  • Garante maior segurança de dados.

Abaixo estão dez dicas para que você possa deixar seu código o mais limpo possível:

 

  • Utilizar Nomenclatura Clara E Intuitiva.
  • Seguir Os Padrões Utilizados No Código.
  • Evitar Repetições Excessivas.
  • Ter Cuidado Com O Uso De Comentários No Código.
  • Evite Configurações Desnecessárias.
  • Use A “Regra Do Escoteiro”! 
  • Utilize Injeção De Dependência.
  • Utilize Variáveis Auto-Explicativas.
  • Evite Condicionais Negativas Com “!”
  • Não Quebre A Indentação.

2 - AS CONVENÇÕES DE FORMATAÇÃO

image

Em meio aos estudos de programação, você já deve ter ouvido falar sobre as Conversões de formatação, pois bem elas são diretrizes ou regras estabelecidas para a apresentação e organização do código-fonte em linguagens de programação.

Elas definem a maneira como: Recuo (Indentação); Espaçamento; Nomeação de Variáveis e Funções:; Quebras de Linha; Comentários: etc. causando assim um padrão para aquele tipo de código, onde hoje em dia temos uma alta gama de tipos de convenções de formatação, dentre elas estão as: camelCase, PascalCase, SCREAMING_SNAKE_CASE, cada uma sendo usada para alguma parte do seu código, como a camelCase que é usada para Variaveis, atributos e métodos. Entre muitas outras.

 

Com isso, o uso das convenções mantém seu código mais limpo e de fácil leitura, assim como manutenção em casos futuros, é importante salientar que todos de uma equipe devem trabalhar com as mesmas convenções de formatação.

 

Caso você ainda esteja se perguntando, quais outros motivos para seguir as convenções, aqui estão listados mais cinco:

  • Melhora a Leitura e Compreensão.
  • Cria uma Padronização.
  • Facilita a Manutenção.
  • Facilita a Detecção de Problemas.
  • Melhora a Documentação Implícita.

3 - ESTILO DE CÓDIGO.

Ter o seu estilo de código irá definir como irá ocorrer o andamento do seu projeto, diferentes estilos de código têm diferentes convenções de formatação que afetam a legibilidade e a estética do código, linguagens como C e C+ possui uma maior flexibilidade. Iremos comentar sobre dois tipos de estilos de código, mas lembrando que a escolha de um tipo de estilo, irá variar de equipe para equipe, tendo que haver um acordo em qual adotar.  

3.1 - ESTILO K&R (KERNEL & RITCHIE)

image

"Notação utiliza o início das chaves na mesma linha após a instrução principal."


Este estilo foi popularizado por Brian Kernighan e Dennis Ritchie, os criadores da linguagem C. Neste estilo as chaves que delimitam blocos de código são colocadas na mesma linha que a declaração da função (em C) ou na linha seguinte (em C++).

A indentação costuma ser feita com tabulações. Algumas das vantagens deste estilo são: Conciso, Já que economiza espaço em tela. Aqueles familiarizados com a sintaxe C original podem achar esse estilo natural e eficiente.

 

Já em termos de desvantagens temos: A falta de chaves em linhas separadas que pode tornar o código menos legível, especialmente em blocos de código longos. A mistura de tabulações e espaços para a indentação pode levar a problemas de formatação.

3.2 - ESTILO ALLMAN

image

     "Notação utiliza o início das chaves na linha após a instrução principal."

Este estilo é frequentemente associado a Eric Allman, co-autor do sistema de email sendmail e um defensor de uma formatação mais legível. Nele as chaves são colocadas em linhas separadas, com uma maior ênfase na legibilidade. A indentação geralmente é feita com espaços. Com isso A formatação clara facilita a leitura e a compreensão do código. Linhas de código mais longas são divididas em várias linhas, o que ajuda a evitar a rolagem horizontal. Contudo o código pode parecer mais extenso devido à maior quantidade de linhas em branco. Programadores que estão acostumados com estilos mais compactos podem achar o código menos econômico em espaço.

4 - FERRAMENTAS DE ESTILO AUTOMATIZADAS (LÍNTER)

As línter São ferramentas ou sistemas automatizados, sendo ferramentas estáticas, que são usadas para garantir que o código siga um estilo de formatação, uma maneira de padronizar, e garantir que o tópico anterior seja seguindo, facilitando assim o trabalho dos desenvolvedores, e facilitando na criação do Clean code, para cada linguagens de programação, há ferramentas que acabam se destacando nas mesmas, como por exemplo: A ESLint que é uma ferramenta altamente configurável para JavaScript e TypeScript que permite definir regras de estilo e encontrar problemas no código. Muitas equipes usam o ESLint em conjunto com configurações populares, como o AirBnB JavaScript Style Guide. Ou então a pylint  que é uma ferramenta de análise estática para Python que segue o PEP 8 (guia de estilo para Python) e verifica o código em busca de problemas de estilo e qualidade. Com isso entendemos que as línters são uma mão na roda de qualquer programador seja ele iniciante ou já experiente no mercado. Contudo é importante salientar alguns pontos:

 

  • Antes de aplicar ferramentas de formatação automatizada, a equipe de desenvolvimento deve definir um conjunto de regras de estilo que especifica como o código deve ser formatado. Isso inclui detalhes como a largura máxima das linhas, o uso de tabulações ou espaços para a indentação, a posição das chaves e outros detalhes de formatação.

 

  • Além dos linters, existem formatadores de código, como o Prettier, que podem automaticamente ajustar o código para seguir as regras de estilo definidas. Essas ferramentas reformatam o código de acordo com as regras, garantindo a conformidade.

 

  • A automação de regras de estilo padroniza o código em todo o projeto, tornando-o mais consistente. Isso é particularmente importante em equipes grandes, onde diferentes desenvolvedores podem ter preferências de formatação diferentes.
  • A automação de regras de estilo ajuda a evitar debates sobre a formatação de código dentro da equipe, uma vez que as regras são claramente definidas e aplicadas de forma consistente. Pois As ferramentas de regras de estilo automatizadas podem ser integradas a sistemas de integração contínua, garantindo que o código seja verificado quanto à conformidade com as regras de estilo em cada confirmação no repositório.

5 - NOMES DE VARIÁVEIS E FUNÇÕES

 

Ter boas práticas na nomenclatura em variáveis, funções e afins, é mais um fator demasiado importante para que seu código fique limpo e bem apresentável, assim como de fácil compreensão. Eles precisam ter clareza e Descritividade, pois os nomes de variáveis e funções devem ser descritivos e indicar claramente a finalidade e o uso dos elementos. Ou seja você precisa dizer exatamente o que ela está fazendo. Para ajudar nisso, como já citamos anteriormente, use das convenções para seguir um padrão, isso não apenas lhe ajudará a se encontrar no seu código, mas também os seus colegas de trabalho. Não crie variáveis com nomes muito grandes, como “essavariavelvaifazerisso” pois tal ação acaba poluindo seu código, tente fazer algo mais simples e intuitivo.

 

As funções por sua vez devem, idealmente, ter nomes verbais que indiquem o que elas fazem. Isso torna o código mais semântico. Por exemplo, em vez de nomear uma função que verifica se um usuário está autenticado como "check," use "authenticateUser" para indicar a ação realizada. Veja que embora o nome da função seja maior, ela vai acabar sendo bem mais intuitiva do que a primeira opção.

 

Quando a escolha de nomes não é suficiente para transmitir a intenção, considere adicionar documentação ou comentários que expliquem a finalidade das variáveis e funções. Periodicamente, reveja o código em busca de nomes de variáveis e funções que possam ser aprimorados. A alteração de nomes é uma prática útil para melhorar a legibilidade do código ao longo do tempo.

 

Abaixo está uma imagem com exemplos do que foi dito neste tópico. 

 image

6 - COMENTÁRIOS E DOCUMENTAÇÃO

Acredito que todos sabem o que são os comentários nos códigos, mas para aqueles que não sabem, eles são “linhas de códigos” que não interfere com o código em si, muitas vezes usados para anotações, cada linguagens possui sua forma de comentários, seja // ou outra. Já a documentação é uma descrição mais abrangente e formal do código, muitas vezes em forma de documentos separados ou comentários estruturados. Ela é especialmente relevante em bibliotecas, APIs e projetos de código aberto. Aqui estão alguns pontos-chave sobre documentação:

Comentários e a própria documentação, são elementos essenciais para tornar o código mais compreensível, comunicar a intenção do código e facilitar a colaboração em equipe. Eles desempenham um papel fundamental na criação de código limpo e bem documentado. Mas deve ser usado com sabedoria pois um código cheio de comentários pode acabar poluindo e atrapalhando a sua compreensão.

Abaixo segue um exemplo com funções Pyton com comentários esclarecendo:

image

Neste exemplo, temos:

  • Um comentário de função que descreve a finalidade da função calcular_fatorial, incluindo informações sobre os argumentos, o valor retornado e exemplos de uso.
  • Comentários em linha explicando as verificações condicionais no início da função.
  • Um comentário de exceção indicando que uma exceção ValueError será levantada se o número for negativo.
  • Comentários no exemplo de uso com uma demonstração do cálculo do fatorial.


7 - LINDANDO COM ERROS DE FORMATAÇÃO

 image

Erros na formatação do código são de fato algo que nos dão dor de cabeça, afinal podem nos fazer perder horas a fio e esgotar totalmente as energias de qualquer desenvolvedor, por isso é sempre bom ter em mente como lidar com os erros, para isso iremos reforçar algumas dicas que já foram passadas no decorrer deste artigo, para manter seu Clean Code o mais funcional possível.

 

  • Use ferramentas de formatação automática, como Prettier, Black (para Python), ou ESLint (para JavaScript). Essas ferramentas podem ajudar a manter a consistência na formatação do código em todo o projeto, evitando que erros de formatação ocorram. Pois como falado, elas já foram previamente programadas com um padrão para o seu código. Não se esquecendo das ferramentas linting.
  • Estabeleça diretrizes de estilo claras para a equipe, preferências de formatação e convenções de nomenclatura. Isso ajuda a garantir que todos os membros da equipe estejam alinhados com as expectativas de formatação. Pois nada vai adiantar se cada membro da sua equipe decidi usar um método diferente.
  • Crie checklists de revisão de código que incluam verificações de formatação. Durante as revisões de código, os revisores podem usar esses checklists para garantir que o código esteja bem formatado.
  • Seguindo estas e as demais dicas deste artigo, você conseguira transformar seu código que antes era uma completa bagunça, em algo mais organizado e fluindo. Assim evitando problemas futuros na hora de por seu código para rodar. 

Conclusão:

 

Chegamos ao fim desde artigo, e com isso podemos concluir qual é a importância de utilizar praticas de Clean code, gerar um código limpo faz com que ele se torne mais fluido. Não criar as chamadas “gambiarras” nos códigos, para que eles possam funcionar de maneira mais eficiente. Conseguindo notar a importância da padronização, seja para Devs Iniciantes, profissionais, individuais ou em grupo. Há muitas ferramentas e meios para que possamos melhorar nosso código, mas devemos os trata-los, como um livro de contos infantis, onde consigamos compreender tudo que se passa ali, e o porque de cada parte ter sido codificada naquele lugar. 

 

Se chegou até aqui, significa que conseguir prender sua atenção, espero que este artigo tenha lhe entregado algum conhecimento. 

REFERÊNCIAS

https://blog.betrybe.com/tecnologia/clean-code/

https://www.softplan.com.br/tech-writers/a-importancia-da-qualidade-do-codigo-e-como-implementa-la/

https://www.alura.com.br/artigos/convencoes-nomenclatura-camel-pascal-kebab-snake-case

https://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)

Compartilhe
Comentários (0)