VB .NET - Refatoração (Refactoring)


Vamos falar um pouco de refactoring ou refatoração. Para começar o que é refatoração ?

Vejamos o que diz a Wikipédia:

Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

O uso desta técnica aprimora a concepção (design) de um software e evita a deterioração tão comum durante o ciclo de vida de um código. Esta deterioração é geralmente causada por mudanças com objetivos de curto prazo ou por alterações realizadas sem a clara compreensão da concepção do sistema.

Outra consequência é a melhora no entendimento do código, o que facilita a manutenção e evita a inclusão de bugs. Esta melhora no entendimento vem da constante alteração do código com objetivo de facilitar a comunicação de motivações, intenções e objetivos por parte do programador

Nota:  O livro mais importante sobre refatoração é Refactoring: Improving the Design of Existing Code (ISBN 0201485672) de Martin Fowler, onde são explicados os conceitos, motivações e uma série de refatorações descritas passo a passo.

Pegando um gancho na definição acima podemos entender a refatoração como sendo o processo de reestruturação de um sistema com o objetivo de simplificar, tornar mais legível e diminuir o custo de manutenção do código sem alterar as funcionalidades do sistema.

Usando técnicas de refatoração você pode reestruturar partes do código do seu sistema alterando sua estrutura interna sem mudar o seu comportamento externo.

Refatorar é melhorar a estrutura do código de um sistema preservando as suas funcionalidades.  Os objetivos básicos de efetuar uma refatoração seriam:

  • Obter um código-fonte claro e de fácil manutenção;
  • Reduzir a  complexidade da aplicação;
  • Remover redundâncias desnecessárias;
  • Reutilizar código;
  • Otimizar o desempenho do software.
  • Dentre os vários cenários passíveis de uma refatoração podemos citar:

    Refatoração no Visual Basic

     

    Para pode realizar a refatoração no Visual Basic 2005 deverá possuir o Visual Studio 2005 instalado e, além disso, deverá efetuar o download  do utilitário Refactor!, um produto da Developer Express, no site : http://www.devexpress.com/Products/NET/IDETools/VBRefactor/.

     

    O Refactor! é uma grátis mas não possui todas as funcionalidades habilitadas . Após efetuar o download e instalar você pode registrar o produto no site da empresa e receber um bônus com algumas funcionalidades a mais do que a versão padrão gratuita.

     

    Após instalar o Refactor! e o bônus podemos realizar algumas operações de refatoração no ambiente do Visual Studio usando o Visual Basic 2005.

     

    O suporte a refatoração para os desenvolvedores VB.NET esta disponível através do menu de contexto acionado pelo clique do botão direito do mouse sobre o código e a medida que você trabalhar com o código o Refactor! esta trabalhando em segundo plano. O menu de contexto é alterado de forma dinâmica de forma e exibir somente as ações de refatoração válidas para o código selecionado. Além disso a ferramenta oferece dicas sobre a ação de refatoração selecionada.

     

     

    As principais ações de refatoração para o Visual Basic 2005 usando o Refactor!

     

    1- O método Extract

     

    Uma das maneiras mais simples de refatorar um método muito grande é quebrá-lo em pequenos pedaços de métodos menores. A ação de refatoração via método Extract é invocada através da seleção de uma região de código que você deseja mover para fora do método original.

     

    O trecho de código a seguir faz parte de uma pequena aplicação Visual Basic 2005:

     

    Private Sub bt1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt1.Click

    txt3.Text = calculo.calculaSoma(txt1.Text, txt2.Text)

    Dim saida As String = Application.CompanyName

    If saida = Nothing Then
         saida = "Usando Refatoração"
    End
    If

    MessageBox.Show(saida)

    End Sub

     

    Podemos selecionar o trecho de código do bloco If/End If para realizar uma extração do código para forma do método. Selecione o trecho de código, clique com o botão direito do mouse e o menu de contexto irá surgir. Selecione a opção Refactor! e em seguida Extract Method.

     

    O Refactor! irá exibir a dica referente a ação proposta com indicações de atuação no código.

     

     

    Ao selecionar a opção - Extract Method - o Refactor! irá solicitar que você indique o local em seu código onde você deseja inserir o novo método.

     

     

    Após selecionar o local o novo método será inserido com um nome arbitrário que estará destacado permitindo que você altere o nome sugerido.

     

     

    Você pode usar este recurso para otimizar o seu código e torná-lo mais legível e mais simples de manter.

     

    2- Reordenando Parâmetros

     

    Ás vezes é preciso reordenar os parâmetros de alguns  métodos de suas classes. Para executar esta refatoração usando o Refactor! escolha o método/rotina e a seguir o selecione um parâmetro do método clicando com o botão direito do mouse após a seleção. Será apresentado o menu de contexto, clique em Refactor! e selecione Reorder Parameters.

     

     

    Será apresentada as opções de reordenamento , selecione a operação desejada e tecle ENTER

     

     

    3- Renomeando métodos e variáveis

     

    Para renomear um método usando o Refactor! selecione o método e acione o menu de contexto com o botão direito do mouse. Serão apresentadas as opções, dentre elas Safe Rename;

     

     

    A seguir selecione a opção Safe Raname. O Refactor! irá gerar um novo método com outro nome tornando o método antigo obsoleto.

     

    <Obsolete("Use Newmultiplica instead."), EditorBrowsable(EditorBrowsableState.Never)> _

    Public Shared Function multiplica(ByVal op2 As Double, ByVal op1 As Double) As Double
        
    Return Newmultiplica(op2, op1)
    End
    Function

    Public Shared Function Newmultiplica(ByVal op2 As Double, ByVal op1 As Double) As Double
        Return
    op1 * op2
    End
    Function

    Note que é exibida também a opção Symbolic Rename. Esta opção renomeia o método e atualiza todas as referências feitas a ele no código.

    Para renomear uma variável local basta selecioná-la. A refatoração Rename Local irá alterar o nome da variável e atualizar todas as referências a ela no seu código.

    Com estes exemplo procurei mostrar alguns dos recursos de refatoração que podem ser usados no VB 2005 via utilitário Refactor! . O suporte a refatoração para o C# é nativo.

    A versão Pro do Refactor! permite o acesso mais funcionalidades, mas isto é assunto para outro artigo sobre refatoração.

    O importante é você perceber que mesmo com estas limitações você pode ainda usá-la para otimizar o seu código.

    Até o próximo artigo...

    Referências:


    José Carlos Macoratti

    Referências:


    José Carlos Macoratti