Conceito: Refatoração
Relacionamentos
Elementos Relacionados
Descrição Principal

Descrição

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

Apesar dos processos como a Programação Extrema se apoiarem na refatoração para permitir que o design apareça, a utilidade da refatoraçã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 refatoração permitem que os programadores mantenham um bom design. A refatoração também pode ser usada para melhorar o design de um sistema existente.

A refatoração não é algo novo. Os desenvolvedores têm refatorado durante anos, embora só recentemente as pessoas tenham começado a catalogar as refatorações. A refatoraçã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 refatoração.

Se o seu sistema não for refatorado 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 refatoraçõ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 refatoraçã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 refatorar confiantemente.

De onde vêm todos estes testes? Na XP, eles são desenvolvidos usando o Desenvolvimento Dirigido por Testes. É possível refatorar 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 Refatoração.