Conceito: Re-fatoração

 
Relacionamentos
Elementos Relacionados
Descrição Principal

Descrição

A re-fatoração é a prática de melhorar o design de um sistema sem alterar o seu comportamento. A re-fatoração é uma prática e habilidade crítica no desenvolvimento iterativo. O programador ou está adicionando uma nova funcionalidade ou está re-fatorando. Os programadores XP escolhem conscientemente entre re-fatorar ou adicionar novas funcionalidades a cada minuto. Algumas re-fatorações são triviais, tais como re-nomear ou mover coisas. Outras lhe permitem trocar uma lógica de procedimento por polimorfismo e, ainda existem re-fatorações maiores para implementar padrões de projeto.

Apesar dos processos como a Programação Extrema se apoiarem na re-fatoração para permitir que o design apareça, a utilidade da re-fatoração vai além das Metodologias Ágeis. Como as solicitações de funcionalidades e a correção de erros necessitam de alterações em um sistema, as técnicas de re-fatoração permitem que os programadores mantenham um bom design. A re-fatoração também pode ser usada para melhorar o design de um sistema existente.

A re-fatoração não é algo novo. Os desenvolvedores têm re-fatorado durante anos, embora só recentemente as pessoas tenham começado a catalogar as re-fatorações. A re-fatoração tornou-se uma parte tão importante do desenvolvimento que, ambientes de desenvolvimento integrado (IDEs) de nível profissional, incluem ferramentas embutidas ou têm plug-ins para apoiar a re-fatoração.

Se o seu sistema não for re-fatorado quando ele for modificado, o seu design irá deteriorar; os métodos tornam-se mais longos, as classes ganham mais responsabilidades, mais código é recortado e colado em seu sistema e o código a ser recortado e colado deve previamente ser modificado em vários lugares.

Se o seu sistema se tornar frágil e inflexível, seus desenvolvedores terão que gastar muito mais tempo e dinheiro para adicionar funcionalidades ou corrigir erros. À medida que o design continuar a deteriorar-se, a correção de um erro irá criar mais dois, ou o custo da adição de uma nova funcionalidade excederá o benefício de tê-la, porque uma grande parte do sistema terá que ser modificada. Existem muitas analogias para descrever esta batalha contra a entropia.

Conhecer as re-fatorações não é suficiente. Os desenvolvedores devem ser capazes de identificar áreas problemáticas no design do programa (muitas vezes referenciadas como "cheiros"). Existem locais onde a re-fatoração pode ser usada para melhorar o design do código. A experiência e a habilidade com o design são necessários para detectar o cheiro de um código ruim.

Os testes automatizados fornecem uma rede de segurança quando se faz mudanças. Os testes automatizados informam quando a funcionalidade do sistema muda. Faça uma mudança estrutural no software e veja se os testes continuam executando com sucesso. você pode re-fatorar confiantemente.

De onde vêm todos estes testes? Na XP, eles são desenvolvidos usando o Desenvolvimento Orientado a Testes. É possível re-fatorar sem testes, mas você corre o risco de introduzir erros inconscientemente ou danificar uma funcionalidade existente.

Benefícios

  • Permite que o design surja ao longo do tempo.
  • Mantém o design longe do sucateamento.
  • Reduz os custos de mudanças.

Informações Relacionadas

Veja Diretrizes para Re-fatoração.