Imagine um projeto que vem sendo desenvolvido há 5 anos.
Esse projeto foi desenvolvido por 6 pessoas diferentes, e tem MUITOS componentes, containers, stores e vários outros arquivos. Você é o mais novo participante desse projeto, e sua primeira task é implementar uma nova função em um componente específico, um botão por exemplo.
Ao abrir o código do componente, você percebe que ele tem VÁRIAS props, várias lógicas dentro dele, muitas condições e MUITAS linhas de código.
É aí que você percebe, esse projeto nunca passou por um refactor. 😱
Sentiu o frio na barriga também? Pois é! Hoje, o Saulo – Desenvolvedor aqui na nata.house, vai trazer pra gente uma discussão sobre Refactors e porque essa é uma parte extremamente importante no desenvolvimento de software.
Confira!
Afinal, o que é Refatoração?
Refatorar significa reestruturar um código sem modificar as funções existentes e sem adicionar qualquer tipo de funcionalidade nova.
Existem várias formas de realizar uma refatoração, e a metodologia usada deve ser conversada entre a equipe do projeto, pois, muito provavelmente o desenvolvimento do projeto ainda estará em andamento e é preferível que as refatorações tenham o mínimo de impacto nas entregas do projeto.
O principal propósito dos Refactors é minimizar ao máximo a Dívida Técnica, também chamada de technical debt.
A dívida técnica surge de momentos durante o desenvolvimento de um projeto no qual a entrega rápida deve ser priorizada em detrimento da organização do código. Como o projeto deve ser entregue rapidamente, a estrutura do código acaba sendo prejudicada e assim surge uma “dívida” do time de desenvolvimento para refatorar esse código no futuro, por isso o nome Dívida Técnica.
Refatorar o código consiste basicamente em “pagar” essa dívida, separando um tempo pra reestruturar o código e facilitar (e muito) a vida de quem ficar responsável por alguma tarefa que envolve essa parte específica do sistema.
Inclusive, já que tocamos nesse ponto, porque não falamos mais especificamente sobre a importância dos refactors?
Facilidade de Leitura e Compreensão
Um código refatorado é um código fácil de ler e fácil de compreender.
Esse tipo de código, chamado de Clean Code, é extremamente importante no desenvolvimento de sistemas no geral, seja com um só desenvolvedor ou uma equipe inteira envolvida no projeto.
Normalmente, quando um código é feito às pressas, a pessoa responsável pelo código não se importa muito com a legibilidade do código, e foca totalmente em implementar a funcionalidade que a task pediu o mais rápido possível.
Facilidade de Manutenção
Esse benefício é 100% relacionado ao anterior, um código fácil de ler e fácil de compreender também é fácil de manter.
Quando um desenvolvedor novo entra no projeto, como foi no caso que imaginamos no começo desse artigo, ele deve ter um tempo pra adquirir contexto sobre o funcionamento do projeto e entender como o código está estruturado.
Um código que não passou por refactors durante seu desenvolvimento pode prejudicar MUITO esse contato inicial e atrasar consideravelmente as entregas.
Facilidade de Novas Implementações
Como você já deve imaginar, refatorar código também facilita bastante quando é necessário adicionar alguma nova funcionalidade no sistema. Um código que não passou por refatorações está muito mais propenso a parar de funcionar corretamente quando uma nova função é implementada, já que o código pode ser mais complicado do que o necessário e ter efeitos colaterais que não foram observados durante o desenvolvimento apressado.
A refatoração diminui muito esse risco e acelera de forma exponencial a implementação de novas funcionalidades.
Beneficia as Habilidades do Programador
Refatorar código é uma forma extremamente eficiente de aprender mais sobre um projeto e possivelmente ter insights que podem ser decisivos na melhora de partes do sistema.
Um programador que fica responsável por refatorações irá compreender completamente como uma parte do sistema funciona, e pode identificar pontos de melhoria e aprendizados enquanto reescreve o código. Esse tipo de habilidade (identificar pontos de melhoria) é extremamente valiosa pra qualquer equipe de desenvolvimento de sistema, e está diretamente relacionada ao refactors.
Esses são alguns dos pontos que evidenciam de forma mais clara possível a importância dos refactors. Existem diversas ferramentas que automatizam a verificação de organização do código, com o objetivo de manter um padrão de desenvolvimento e até mesmo sugerem melhorias!
Caso tenha interesse, o GitHub possui diversas ferramentas gratuitas no seu marketplace.
Aqui na nata.house nós prezamos muito em deixar o código mais organizado e estruturado possível, visando implementações futuras, entradas de novas pessoas na moçada e agilidade na entrega de tasks com qualidade.
Utilizando ferramentas como Eslint (temos uma configuração padrão pública da natahouse), Husky e muitas outras, garantimos que o código terá o mínimo de redundância possível e será extremamente organizado e legível.
Espero que a importância dos refactors tenha ficado clara e que você tenha gostado desse artigo!
Caso queira saber mais sobre como trabalhamos na nata e pegar outras dicas de ouro, dá uma conferida nos outros posts do nosso blog. Muito obrigado pela leitura!
Referências
Why Is Refactoring Your Code Important in Agile?
What is Code Refactoring? How Refactoring Resolves Technical Debt
Technical Debt: O que é, quais suas consequências e como evitar?