A refatoração envolve a melhoria do design do código existente sem alterar o comportamento do sistema. Não é
explicitamente a adição ou alteração de comportamento, mas a melhoria do design do comportamento existente.
Um conjunto completo de testes de desenvolvedor é necessário antes que a refatoração seja seguramente aplicada. É
fundamental que o comportamento do sistema esteja em um estado conhecido e correto antes da modificação do design, de
forma que você possa melhorar o design sem o receio de que a implementação da modificação cause erros. A refatoração é
uma transformação segura para melhorar o código, mas só é segura se existirem testes que possam comprovar que o sistema
funciona como esperado.
A refatoração inicia quando uma área, que precisa de melhorias é identificada no sistema, quer através da análise do
código, ou qualquer outra representação do design. Os problemas identificados são às vezes chamados de "cheiros".
Seguem alguns cheiros para observar se poderão conduzir a refatoração:
-
Código duplicado: O código duplicado torna o sistema mais difícil de entender e manter.
-
Grandes Elementos ou Métodos de Design: Grandes elementos ou métodos de design diminuem a capacidade das
pessoas de compreenderem o design, reduzem o potencial de reuso e tornam os testes de desenvolvedor mais difíceis.
-
Elementos mal nomeados: independente de serem variáveis, funções, classes ou componentes, seus nomes devem
denotar o que eles são, de forma que o código possa ser mantido.
-
Acoplamento justo: Cada elemento de design deve funcionar com o mínimo de preocupação sobre os aspectos
internos dos outros elementos de design. Caso contrário, as alterações em um elemento podem causar efeitos
indesejáveis em outros elementos.
Como você pode ver nesta lista, a refatoração pode melhorar a "parte interna" de um elemento de design, a interface do
elemento ou os relacionamentos e a colaboração entre os elementos. Além disso, muitos dos cheiros são caracterizados
como fatores que tornam o software mais difícil de entender; e que a refatoração torna o sistema mais simples.
Após um problema ter sido identificado, um método de refatoração poderá ser selecionado para melhorar a situação.
Existem catálogos de métodos de refatoração disponíveis que são padrões de alteração que vão resolver os problemas
comuns, mantendo o comportamento do sistema.
Seguem exemplos de métodos de refatoração:
-
Extração de Método: Colocar o código duplicado em um único método ou extrair uma parte de um método grande
para um novo método.
-
Extração de Classe: Colocar uma parte coesa de uma classe em uma nova classe, para reduzir o tamanho de um
elemento de design que seja muito grande.
-
renomeação de Método, renomeação de Classe ou renomeação de Variável: Dê um nome mais
significativo a um elemento para que se torne mais compreensível.
-
Extração de Interface: Crie uma interface limpa para um elemento para reduzir o acoplamento.
Quando a refatoração for aplicada, os testes de desenvolvedor devem ser reexecutados para garantir que o sistema ainda
se comporta corretamente. É importante que o sistema esteja funcionando corretamente após cada refatoração. Embora
muitas refatorações possam ser feitas em conjunto para impulsionar grandes mudanças em todo o código base, os testes
devem ser executados com sucesso em cada refatoração aplicada. A refatoração deve ser aplicada como pequenas
transformações que preservam o comportamento.
Conforme mencionado anteriormente, a refatoração exige a cobertura de teste de desenvolvedor plena da área sob
consideração. Existem outras técnicas que permitem a refatoração. Os padrões de codificação definem um estilo comum e
tornam mais fácil a refatoração consistente. Uma atitude de propriedade coletiva de código por parte da equipe é muito
importante. Cada desenvolvedor deve entender que a refatoração pode ser aplicada em todo o código base para melhorar a
implementação.
|