Olá, pessoal! Em dezembro de 2013, comecei a ler o livro Clean Code do autor Robert C. Martin e devo dizer que aprendi muita, muita coisa com ele. Hoje é dia de entrar um pouco mais nos detalhes dessa prática e conhecer algumas orientações de como empregá-la. Limpeza no código já!
Introdução
Todos nós, desenvolvedores, temos o desejo de ver o nosso código funcionando da melhor forma, não é? Quando digo “funcionando”, não me refiro apenas à execução correta da funcionalidade, mas também à qualidade do código e o nÃvel de expressividade que ele expõe. Afinal, quando implementamos um código, o resultado será visto tanto pelo cliente quanto por nós mesmos. Quem já não se deparou com um código antigo e ficou por horas interpretando a lógica? Quem já não teve de refazer blocos de código por causa da falta de clareza? A propósito, vou deixar a questão da expressividade para outro artigo.
O conceito de Clean Code foi elaborado justamente para evitar a ilegibilidade do código e aprimorar a qualidade da nossa codificação. Na verdade, é um conjunto de práticas que deve ser adotado por qualquer programador que queira ser reconhecido como um bom profissional.
Porém, ao contrário do que muitos pensam, não basta somente ler um livro e acreditar que já conhece as diretrizes do Clean Code. É preciso prática, raciocÃnio e, acima de tudo, determinação para produzir algo de qualidade. Por esse motivo, decidi reunir alguns pontos apresentados no livro e compartilhá-los aqui no blog para disseminar essa prática. Leia-os atentamente e lembre-se deles ao implementar o seu próximo código.
1) Não é possÃvel criar um código limpo de primeira
Por mais que um desenvolvedor tente, é praticamente impossÃvel. Claro, é extremamente importante que um desenvolvedor já comece a programar com as diretivas do Clean Code em mente mas, eventualmente, ele acabará voltando ao código para refatorar ou renomear alguns métodos que ficaram passÃveis de má interpretação. No entanto, isso é perfeitamente natural. Quando iniciamos uma nova implementação, não sabemos exatamente quais, quantos e como serão os métodos que devemos implementar. À medida que o código vai tomando forma é que começamos a nossa “limpeza”.
2) Pare de programar quando notar que o código está ruim
Evite implementar o código por completo e só depois partir para o Clean Code. A limpeza deve ser feita aos poucos, caso contrário, é bem provável que o desenvolvedor perca o foco do código como um todo. Aquela ideia de “vou deixar assim por enquanto e depois eu volto para arrumar” é uma passagem grátis para o esquecimento.
Portanto, quando perceber que o código está tomando proporções inadequadas e apresentando sinais de duplicação, interrompa a implementação e faça uma limpeza antes de continuar. Na verdade, é a mesma situação de um bloco de cimento recém aplicado: aproveite para arrumá-lo enquanto ainda não está seco. Se ele secar, o trabalho de removê-lo ou reformá-lo será muito mais difÃcil.
3) Aprenda a programar com paciência
Um dos efeitos do Clean Code é o trabalho constante de remover e adicionar o mesmo código repetidas vezes. Isso faz parte do processo de maturidade para alcançar o nÃvel ideal de qualidade. Já perdi a conta das vezes que criei, alterei, removi, criei novamente e renomeei uma classe. A cada etapa, eu levantava um ponto de vista diferente do código e o alterava para torná-lo mais claro.
Como analogia, imagine que você tenha acabado de se mudar para uma nova casa e está organizando os móveis da sala para descobrir qual é a acomodação mais confortável. Para isso, você provavelmente precisará mudar os móveis de lugar várias vezes, concorda? Esse é o sentido! Assim como você busca a melhor disposição dos móveis na sala, também deve buscar a melhor organização do código no seu programa. Aproveitando a analogia, lembre-se de que, da mesma forma que você receberá visitas na sua sala, o seu código também receberá “visitas” de outros programadores.
Em conclusão, se você deseja criar um código limpo e com qualidade, esteja preparado para desfazer e refazer blocos de código quantas vezes forem necessárias.
4) Considere a codificação como uma atividade de risco
Se um requisito funcional não é documentado, é simples refazer a documentação. Se houve uma falha na estimativa, é fácil refazer o cronograma. Porém, se um código estiver ruim, refazê-lo é algo demorado e, muitas vezes, custoso. Além disso, não se garante que ele terá o mesmo funcionamento como antes.
Devemos nos comprometer com a relevância da nossa codificação, visto que o resultado do código (e, consequentemente, da funcionalidade) está intimamente relacionado com o nosso nÃvel de responsabilidade. A ideia aqui não é pressionar a consciência do programador e penalizá-lo por construir um código imperfeito, mas apenas sugerir que ele considere a importância dessa atividade no ciclo de vida do projeto.
5) Aumente a sua sensibilidade ao código
Conforme utiliza as práticas do Clean Code, o desenvolvedor produz e amplia uma habilidade conhecida 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. Renomear variáveis, desfazer blocos aninhados, refinar condições, extrair métodos e até mesmo considerar alternativas mais viáveis para tratar as regras de negócio são exemplos de sensibilidade técnica de um profissional. Quanto maior for este nÃvel de sensibilidade, melhor serão as soluções propostas e desenvolvidas pelo desenvolvedor.
6) Codifique pensando na leitura
Uma boa recomendação para praticar o Clean Code é implementar o código já imaginando que outro desenvolvedor futuramente irá interpretá-lo. Na realidade, isso irá acontecer! Portanto, procure ler cada método logo após implementá-los e meça o nÃvel de legibilidade. Ou então, tente se colocar no lugar de outra pessoa e encontre as dificuldades que ela possivelmente teria ao ler o seu código. Embora pareça uma tarefa maçante, é até gratificante, já que você acaba contemplando a qualidade do seu próprio código.
Leitores, sei que o artigo ficou um pouco extenso, mas espero ter transmitido as premissas adequadas para começar a praticar o Clean Code. Continuarei elaborando alguns artigos sobre este assunto nos próximos meses. Aguardem!
Um grande abraço a todos e até a próxima!
Parabéns André, excelente artigo!
Sou partidário do Clean Code também e esse livro em especial ajudou e muito a abrir a minha mente.
Grande abraço.
Olá, Diego!
É uma grande honra receber um comentário seu!
Acompanho o seu blog e já aprendi bastante coisa com ele!
Obrigado pelo feedback! Abraço!
Ótimo post, meus parabéns André Luis.
Lembrando que em se tratando de Clean Code além da refatoração e fatoração, existe o acoplamento e a coesão. Diz que um código está ótimo quando o mesmo está fracamente acoplado e altamente coeso.
Abraços a Todos.
Olá, Armando!
Bem lembrado! Clean Code também se refere à organização da estrutura do software e orienta o emprego dos princÃpios SOLID.
Obrigado pelo comentário! Abraço!
Olá André de fato esse livro é muito bom e seu artigo sobre ele ficou ótimo.
Olá, Emanoel! Realmente, eu acho que esse livro deveria ser lido por todos programadores!
Obrigado pelo comentário!