Como desenvolver um código limpo e funcionalidades objetivas

Desenvolver aplicativos ou softwares demanda um período de estudos e construção do produto. Para isso, o desenvolvedor deve ter em mente sobre a arquitetura do projeto e usando códigos limpos – Clean Code – para que as funcionalidades sejam objetivas.

A inovação em aplicações web e móveis são recorrentes, é preciso sempre estar lançando novas funcionalidades e recursos que podem fazer com que um produto continue em alta com o público por mais tempo.

Seguindo essa lógica, se a aplicação não tiver o código limpo, a manutenção e a adição de novos recursos será bem mais complicada. Em certos casos, passa a ser mais fácil fazer uma nova versão independente da aplicação do que tentar atualizar a atual.

E claro, sabemos que o trabalho de um desenvolvedor já não é fácil e ter que recomeçar um projeto periodicamente não é sinal de produtividade. Bom, o mais importante é que o Clean Code se caracteriza por um compilado de técnicas voltadas para que você trabalhe com um código limpo e seja mais produtivo e organizado.

 

Mas afinal, o que é código limpo ou clean code?

O clean code – código limpo – é uma estrutura construída de maneira simples e direta. Facilitando a compreensão das funcionalidades da aplicação ou software e deixando claro qual o objetivo.

Esse conceito de desenvolvimento facilita os desenvolvedores na manutenção, a inserção de novas aplicações e as atualizações no código. Caso o cliente queira fazer alguma alteração do seu produto futuramente.

Portanto, ao criar um código limpo pode ser muito importante, por exemplo, evitar fazer alterações no código ou em outras funcionalidades que se quebrem durante o upgrade do aplicativo.

Depois de entender o que é um código limpo, agora confira como você pode trabalhar com utilizando esta técnica:

 

Dando nomes a cada parte e função do projeto

O primeiro passo para ter um código limpo é dar nomes a tudo o que for essencial no projeto, sejam variáveis, funções, parâmetros, etc. Dessa maneira, sempre que você precisar voltar a mexer na aplicação, você entenderá o que cada parte do projeto significa e onde está.

As dicas neste passo é que você seja preciso na hora de escolher o nome, até para lhe facilitar nas buscas futuras. Também não é recomendado o uso de nomes muito grandes, o importante é que ele seja descritivo e de fácil compreensão.

O ideal é que os métodos e funções do projeto ganhem nomes de verbos que indiquem quais são as suas finalidades e as classes e objetivos devem ser identificados por nomes mais comuns.

 

Crie o seu próprio código

Desde o início a responsabilidade de um código limpo é do próprio desenvolvedor e por isso é importante criá-lo a sua função, ou seja, crie um código com a sua cara. Em outras palavras, crie suas próprias funções e variáveis de maneira clara e objetiva, para que você saiba como mexer na aplicação, mesmo após muito tempo depois de tê-la entregado ao cliente.

Cada função deve ter uma única tarefa, e claro, ser capaz de cumpri-la. Quanto mais simples for, melhor! Dessa maneira, você poderá usar a mesma função para fazer a manutenção de várias partes de um mesmo projeto.

Ter um código adaptado às suas próprias características é uma forma eficiente de ser mais produtivo no desenvolvimento de projetos tanto básicos quanto complexos. Dessa maneira, você dominará todos os recursos de uma aplicação web.

 

Comente apenas o indispensável

Só faça comentários nos códigos quando necessário e nunca os mude. Lembre-se sempre: um código pode ser alterado diversas vezes, mas os comentários nunca, por que a finalidade sempre é a mesma.

Caso haja mudanças ou você espalhe comentários por todas as partes, o projeto acabará perdendo o sentido e em vez de lhe ajudar na hora de desenvolver uma aplicação, o excesso irá lhe atrapalhar.

O excesso de comentários prejudica e muito o fluxo de trabalho de um desenvolvedor web. Isso pode fazer com que você se perca e acabe ignorando os comentários que realmente são indispensáveis para o bom andamento de seus projetos.

Revise todos os seus comentários e veja se eles condizem com o que você precisa para tornar a aplicação web melhor, caso repare que isso não acontece, apague os que forem necessários.

 

Não repita (DRY)

A sigla DRY (Don’t repeat yourself) significa em português, “Não repita a si mesmo”. Esse conceito tem como base partir de apenas uma representação, buscando evitar a duplicidade de códigos em um projeto.

Para deixar ainda mais claro, não devem existir duas partes iguais no mesmo projeto, ou seja, que desempenhem a mesma função. Como dissemos acima, criar uma função que possa ser executada diversas vezes é recomendado, mas duplicá-la não é.

Isso só irá gerar mais trabalho e poderá representar um problema a médio e longo prazo, na medida com que a aplicação vá recebendo atualizações e passe por manutenções. Quanto maior a complexidade do projeto, pior será o resultado.

Por isso, cada função deve ser uma só e desempenhar função diferente das outras. Evite a repetição a todo custo, utilize o método DRY para isto.

 

Insira o Clean Code em todo o seu trabalho

Não adianta nada seguir as dicas acima uma única vez. O ideal é que você torne as técnicas Clean Code um costume em seu ambiente de trabalho. Se importar com seu código é essencial para que você se torne um desenvolvedor web de sucesso.

Fazer tudo o que listamos acima de maneira recorrente irá ajudar a se adaptar mais rápido as técnicas Clean Code, fazendo com que você consiga otimizar seus trabalhos através de um código limpo.

 

Nomes são muito importante

É comum as pessoas serem apelidadas pelas suas características mais comuns. No entanto, para termos um código limpo, deve-se também fazer isso com ele. Nomear variáveis, funções, parâmetros, classes ou métodos de acordo com suas funcionalidades. Isso é essencial para um bom entendimento do código.

Ao definir um nome, precisa ter em mente dois pontos principais:

  • Ser preciso: precisamos passar a ideia central da nossa variável ou método, sem dar voltas, sendo conciso e direto.
  • Não ter medo de nomes grandes: um nome bem descritivo, mesmo que seja grande, irá possibilitar uma melhor compreensão e posterior manutenção do código.

Para finalizar, é recomendável que:

  • Métodos ou Funções: devem ter nome de verbos, para assim, expressar quais são suas finalidades;
  • Classes e Objetos: deve ser utilizado substantivos.

 

Os nomes têm significado

Primeira dica infalível: nunca, jamais, em hipótese alguma reaproveite exatamente o mesmo nome em outro contexto. Na dúvida se ainda está no mesmo contexto para reutilizar uma variável, só não reutilize.

O significado na hora de praticar Código Limpo

Segundo o dicionário do Google um “significado” é uma relação de reconhecimento. Algo com significado é reconhecível. Então um nome deve dar significado ao que nomeia.

 

Indicação:

No livro Clean Code. A Handbook of Agile Software Craftsmanship existe um capítulo inteiro falando sobre a importância, boas práticas e cuidados com os nomes dados aos códigos. Separamos alguns trechos sobre este capítulo para que você desenvolvedor ou programador entenda mais sobreo código limpo:

 

Classes gramaticais

Achou que bastava saber matemática para programar bem? Achou errado!

Pois é, as classes gramaticais são substantivos, como as funções e verbos. Continuando, para dar bons nomes o desenvolvedor precisa ter uma noção não só delas como das outras que existem.

Nunca utilize pronomes, artigos, também, evite ao máximo utilizar numerais, preposições e conjunções. Essas classes só têm sentido em frases maiores o que vai te obrigar a dar um nome bem grande para que tenham significado.

 

Seja coerente

Existem múltiplas palavras chave para um mesmo sentido. As palavras search e find podem ser usadas dando o mesmo sentido de busca, por exemplo. Nestes casos é bom que o código mantenha a coerência.

Em produção textual, a coerência é o que faz o seu texto não perder o sentido da mensagem. Então os termos já introduzidos como referência são reutilizados com mais significado durante o texto conforme vão sendo apresentados novamente.

Idioma e Case Types na hora de praticar código limpo

A programação é sempre feita em inglês, se por acaso você não tem o domínio desse idioma, aproveite a oportunidade e pratique. Esse é o ambiente perfeito para você errar sem vergonha alguma, pois até quem é fluente no idioma vai escrever nomes ruins.

É extremamente difícil escrever tudo em português visto que uma hora ou outra você vai precisar usar coisas nativas da própria linguagem de programação em que estiver e que fatalmente estarão em inglês.

 

Seja um verdadeiro autor do seu código

O código é uma história. Então, como um bom autor, se preocupe com a maneira de contar essa história. Portanto, a ideia desse tópico é simples! Para estruturar um código limpo, é necessário criar funções simples, pequenas e claras.

“Elas precisam ser pequenas.”

Já a segunda regra das funções diz o seguinte:

“Elas têm de ser ainda menores.”

As funções devem ter apenas uma tarefa e, assim, saber cumpri-las da maneira mais simples possível. Em síntese, possibilita que um método seja reutilizado diversas vezes em seu código, facilitando sua manutenção a longo prazo.

 

Testes limpos

Em seguida, um código só está realmente limpo, se ele for validado. Mas a questão é, como é possível manter um teste limpo? A resposta é simples, da mesma maneira que mantemos o nosso código limpo, com clareza, simplicidade e consistência de expressão.

Testes limpos seguem as regras do acrônimo FIRST (Fast, Indepedent, Repeatable, Self-validation, Timely).

  • Rapidez: os testes devem ser rápidos para que possam ser executados diversas vezes;
  • Independência: quando testes são dependentes, uma falha pode causar um efeito dominó dificultando a análise individual;
  • Repetitividade: deve ser possível repetir o teste em qualquer ambiente;
  • Auto validação: bons testes possuem como resultado respostas do tipo “verdadeiro” ou “falso”. Caso contrário, a falha pode se tornar subjetiva;
  • Pontualidade: os testes precisam ser escritos antes do código de produção, onde os testes serão aplicados. Caso contrário, o código pode ficar complexo demais para ser testado ou até pode ser que o código não possa ser testado.

 

Os nomes possuem uma responsabilidade muito grande na clareza de um código

Os nomes de variáveis, parâmetros, funções, classes e métodos. Não possuem limite de caracteres, portanto, não deve se preocupar ao dar um nome extenso, desde que seja preciso e claro. Robert fornece também, algumas dicas de nomenclatura, são elas:

  • Use nomes que revelem seu propósito;
  • Evite informações erradas;
  • Faça distinções significativas;
  • Use nomes pronunciáveis;
  • Use nomes passíveis de busca;
  • Evite codificações;
  • Métodos ou Funções: devem possuir nomes de verbos, transparecendo suas funcionalidades;
  • Classes e Objetos: use substantivos.

O autor afirma: “Se você precisou escrever um comentário para explicar o que uma variável ou método faz, o nome está mal escrito.”

Na estruturação de um bom código, é essencial a existência de funções pequenas e objetivas. Para Robert, cada função deve exercer apenas uma tarefa, isso proporciona não só um código mais limpo visualmente, mas também, permite a reutilização de um mesmo método em diversos pontos do código.

 

E quanto aos comentários?

Quanto menos comentários, melhor. Por isso, os comentários são facilmente substituídos por nomes bem escritos e quando eles realmente precisam estar presentes no código. Ou seja, deve ter a obrigação de lembrar de alterá-los ou removê-los quando necessário.

 

Quais os riscos de copiar e colar?

Evite repetições. Não existe um motivo para duas ou mais partes no código exercerem a mesma função, isso agrava a qualidade da manutenção. Se acaso, existe o mesmo código duas vezes, se um dia a refatoração for necessária, maior a chance da implementação de um bug.

Quando o assunto é código, é impossível falar de legibilidade sem passar por formatação, seja horizontal ou vertical. Visto que, são os principais fatores para uma boa estruturação da classe.

Portanto, quando estiver trabalhando em determinado projeto e encontrar pontos de melhoria, corrija-os! Assim, não precisa de uma refatoração muito robusta, altere um pequeno trecho.

Na próxima vez que presenciar essa situação, faça uma pequena alteração novamente, dessa forma, crie um excelente hábito que será bom não só para você, mas para todos que um dia passarão por esse código.

 

Hora de testar?

Na verdade, toda hora é hora de testar. O livro faz referência ao TDD (Test Driven Development), que tem por regra, fazer o teste antes mesmo de escrever o código, ou seja, programar se baseando em testes unitários. Também cita as três leis do TDD, que são elas:

“Primeira lei: Não se deve escrever o código de produção até criar um teste de unidade de falhas.

Segunda lei: Não se deve escrever mais de um teste de unidade do que o necessário para falhar, e não compilar é falhar.

Terceira lei: Não se deve escrever mais códigos de produção do que o necessário para aplicar o teste de falha atual”

 

Agora você tem um código limpo!

É possível notar que existe um universo muito além do código funcional, sem dúvida, a importância de cada pequena boa prática do programador ou da programadora durante o desenvolvimento que leva à excelência.

Além disso, a peça chave para um código entregável de qualidade, desde o planejamento até a execução. Concluindo, a pessoa que for dar manutenção no seu código não terá mais tanto tempo onerado devido a um código sujo.

 

Outras Postagens