Conceito: Refatoração
Este conceito explica as estratégias para melhorar o design do código existente de forma que não altere seu comportamento externo.
Relacionamentos
Descrição Principal

A refatoração é uma forma disciplinada de reestruturar o código quando pequenas mudanças são feitas nele para melhorar o design. Um aspecto importante de uma refatoração é que ela melhora o design sem mudar o comportamento do design; uma refatoração não adiciona nem remove funcionalidade.

A refatoração permite evoluir o código lentamente no tempo, de forma que se tenha uma abordagem iterativa e incremental para a implementação.

Existem três tipos de refatoração:

  1. Refatoração de código. Normalmente conhecida como refatoração, é a refatoração do código fonte programado. Exemplos de refatoração de código: Re-nomear Métodos, Encapsular Campos, Extrair Classes, Introduzir Afirmações e Especializar Métodos.
  2. Refatoração de base de dados. Uma refatoração de base de dados é uma simples mudança no esquema da base de dados que melhore seu design mantendo suas semânticas comportamental e informativa. Exemplos de refatoração de base de dados: Renomear Colunas, Dividir Tabelas, Mover um Método para a Base de Dados, Substituir LOB por Tabela, Associar Restrições as Colunas e Usar Fontes Oficiais de Dados.
  3. Refatoração de interface de usuário (UI). Uma refatoração de interface de usuário é uma simples mudança na interface mantendo sua semântica. Exemplos de r-fatoração de interface de usuário: Alinhar Campos de Entrada, Aplicar Tamanho Comum aos Botões, Aplicar uma Fonte Comum, Indicar Formato, Reescrever o Texto em Voz Ativa e Aumentar o Contraste das Cores.

Martin Fowler identifica quatro principais razões para refatorar:

  • A refatoração melhora o design do software
  • A refatoração torna o software mais fácil de manter.
  • A refatoração lhe ajuda a encontrar defeitos
  • A refatoração lhe ajuda a programar mais rápido

A refatoração pode melhorar o design do código existente, mas não substitui a consideração do design antes da escrita do código. Ao contrário, a refatoração muda o papel de design, permitindo que o trabalho estritamente de design seja mais abstrato. Decisões muito táticas e de pequena escala, podem ser tomadas durante a implementação da solução com a confiança de que a refatoração irá garantir uma implementação de qualidade, neste nível. A execução do design da solução, antes da implementação, será mais leve e focada em grandes fatores que irão direcionar a implementação.

Existe um benefício adicional da refatoração: ela muda a forma que um desenvolvedor pensa sobre a implementação quando não há refatoração. A tarefa básica da implementação de uma solução torna-se unicamente a obtenção do sucesso da execução dos testes de desenvolvedor na solução da forma mais simples possível. Então, o design da solução pode ser examinado e refatorado separadamente. Mesmo que essas duas coisas -- a implementação da solução e, em seguida, a melhoria -- sejam mínimas, pode ser interessante para um desenvolvedor criar o código que faça com que o teste passe e melhorá-lo depois.

Fontes de informação sugeridas: