Refatoração - copyright "Pixomar"Oi pessoal, o post de hoje fala sobre a refatoração, uma prática muito importante para garantir a manutenção dos códigos, seja de um sistema pequeno ou, principalmente, de um sistema de grande porte.

A técnica da refatoração consiste no aprimoramento do design e legibilidade de um código que esteja se tornando ultrapassado. A medida que esses pontos do código são encontrados eles devem ser corrigidos.

Segundo David Astels, autor o livro Test-Driven Development: A Practical Guide, a "refatoração é o processo de fazer mudanças em um código existente e funcional, sem alterar seu comportamento externo. Em outras palavras, alterar a MANEIRA como ele faz, mas não O QUE ele faz".

Essas simples mudanças que vão sendo efetuadas com o passar do tempo, mesmo que pequenas, possibilitam que o código do projeto caminhe sempre de "mãos dadas" com a evolução do produto. Desta maneira, as sucessivas melhorias no código possuem um efeito cumulativo que conferem uma maior facilidade para o desenvolvedor nos processos de detecção de erros e nas eventuais implementações de mudanças de regras de negócios.

De acordo com Poppendieck, em Lean Software Development: An Agile Toolkit, a prática da refatoração tem como objetivo manter, ao longo do tempo, algumas características no sistema, como:

  • Simplicidade – serve para diversas profissões. Geralmente o simples é o funcional;
  • Clareza – significa a legibilidade do código, para que seja entendido por todos;
  • Ausência de repetição – por quê manter um código idêntico em dois lugares?

O ideal, em toda equipe de desenvolvimento, é adotar a prática da refatoração sempre que se deparar com um código que necessite de manutenção. Algumas situações são particularmente fáceis de serem identificadas, como por exemplo, os códigos duplicados, ou ainda, a existência de métodos com comentários em excesso. Geralmente um código que precisa se auto-explicar por muitas vezes é sinônimo de um código mal escrito.

Apesar dos benefícios da refatoração, sua adoção na prática pode ser questionada com a pergunta "Mas eu tenho prazos apertados, como vou ter tempo para refatorar?". É importante que fique claro para o desenvolvedor que a refatoração não é um desperdício de tempo. Pelo contrário, ela evita desperdícios com um código de fácil manutenção e menos sujeito a erros. Além disso, vale lembrar que a refatoração que não é feita hoje, possivelmente irá acarretar em um problema no futuro, quando a sua correção se tornará bem mais custosa.

Para finalizar o post recomendo a leitura de Testes de aceitação no desenvolvimento ágil, de Felipe Madureira. Pois para que a refatoração no código possa ser feita de maneira segura, sem o risco de causar nenhum "dano colateral", é importante que o projeto esteja amparado por testes automatizados.

Até o próximo post!