Code Refactoring

Para algumas pessoas desenvolver software não é mais do que se sentarem frente ao computador e programar uma determinada aplicação, enquanto para outros o processo de desenvolvimento de uma aplicação é muito mais do que isso, é o seguir determinadas normas implementadas de modo a conseguir a mais simples, mais fiável e mais optimizada aplicação.

Neste contexto o Code Refactoring auxilia o aperfeiçoamento do código-fonte minimizando as possibilidades de ocorrerem falhas, mas o Code Refactoring está ligado directamente ao processo evolutivo do software, pois utilizando as técnicas de Code Refactoring correctamente o software aumenta consideravelmente o seu tempo de vida útil, a sua extensibilidade e a sua modularidade.

O Code Refactoring tem a seguinte definição:

By continuously improving the design of code, we make it easier and easier to work with. This is in sharp contrast to what typically happens: little refactoring and a great deal of attention paid to expediently adding new features. If you get into the hygienic habit of refactoring continuously, you’ll find that it is easier to extend and maintain code.

Esta definição foca principalmente a questão de que é fundamental melhorar continuamente o design do código-fonte de modo a tornar mais fácil a sua leitura e interpretação. Ou Seja, o Code Refactoring é o processo de alteração e evolução do código fonte de um software de modo a que o seu comportamento observável não mude, mas a sua arquitectura interna seja aperfeiçoada.

A essência do Code Refactoring é continuar a melhorar e optimizar o código-fonte de um determinado software mesmo após este já ter sido implementado.

 

Quando aplicar o Code Refactoring?

Por vezes encontram-se situações em que o código-fonte está tão confuso que talvez fosse mais fácil reescreve-lo, do que aplicar-lhe o Code Refactoring. Este é um sinal claro de que a necessidade de reescrever o código-fonte ocorre quando este não funciona da forma esperada. Esta situação só é descoberta à medida que o código-fonte é compilado e a aplicação testada, sendo assim possível verificar que o código-fonte tem diversas falhas e que não será possível melhora-lo sem antes este ser reescrito.

Um ponto importante a ter em conta antes de se efectuar o Refactoring Code é que o código-fonte deve estar perfeitamente funcional antes de serem aplicadas as medidas de Refactoring Code. Outra das situações onde deve ser evitado o Code Refactoring é quando o prazo final do desenvolvimento estiver muito próximo, pois ao ser implementado o processo de Code Refactoring poderiam aparecer algumas falhas atrasando todo o processo e assim levar a uma falha no incumprimento dos prazos estabelecidos.

Antes de se implementar o Code Refactoring é aconselhável que se tenha definido  um plano sólido de testes a efectuar de modo a poder comprovar toda a integridade do resultado obtido após o processo de Code Refactoring.

 

Bad-Smells

O termo “Bad-Smells” foi definido por MartinFowler e Kent Beck como referência às caracteristicas encontradas em códigos-fonte onde deve ser aplicado o Code Refactoring.

Alguns dos “Bad-Smalls” conhecidos são:

- Código em Duplicado

- Métodos Demasiado Longos

- Classes Extensas

- Grandes Listas de Parâmetros

- Alterações Divergentes

- Comandos Switch

- Hierarquias Paralelas de Herança

- Campos Temporários

- Cadeias de Mensagens

- Bibliotecas de Classes Incompletas

- Demasiados Comentários

 

Utilização do Code Refactoring

Antes de ser aplicado o processo de Code Refactoring é necessário definir um conjunto de passos a ter em conta no momento de se aplicar o Code Refactoring.

- Identificar previamente o local onde se irá implementar o Code Refactoring

- Definir todas as alterações a serem implementadas.

- Garantir a integridade do comportamento observável da aplicação.

- Confirmar a preservação do comportamento observável após a implementação do Code Refactoring.

 

Vantagens da Implementação do Code Refactoring

A implementação correcta do Code Refactoring tem muitas vantagens, tais como:

- Redução do Código-Fonte Duplicado

- Aumento da Simplicidade do Código-Fonte

- Melhora o Desempenho

- Aumenta a Legibilidade do Código-Fonte

Desvantagens da Implementação do Code Refactoring.

Como nem tudo poderiam ser vantagens, já foram apresentadas algumas desvantagens relativamente ao processo de Code Refactoring.

É bastante difícil apontar limitações ao processo de Code Refactoring, mas todas as desvantagens encontradas derivaram de experiências sem sucesso. É também através destas experiências que se irão encontrar novas desvantagens e ao mesmo tempo se encontrarão novas soluções e se deferirá quando ou não e em que situação se deve aplicar o Code Refactoring.

Algumas das desvantagens Apresentadas São:

- Uso em Bases de Dados

- E a Alteração de Interfaces

Mesmo tendo algumas limitações, o processo de Code refactoring é extremamente válido e útil.

 

Conclusão

O Code Refactoring é cada vez mais popular entre a  comunidade de programadores. Não que seja um assunto recente, mas é devido à actual necessidade de melhorar a produtividade, legibilidade e fiabilidade do código-fonte desenvolvido que se tem assistido a um crescimento exponencial de programadores a implementar o processo de Code Refactoring.