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:
Dentre os vários cenários passíveis de uma refatoração podemos citar:
Alterar o nome de uma classe, função ou método : Permite a alteração do nome (identificador) de uma classe, variavel, ou método. A alteração é propaganda por todo o código que realize alguma referência ao identificador alterado.
Extrair um método : Essa operação gera um novo método a partir do código previamente selecionado pelo programador através do editor de código-fonte integrado ao ambiente de desenvolvimento.
Encapsular campos :
Gera os métodos
get e set para os
atributos de uma classe, atualizando todas as referências aos atributos em
códigos associados.
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 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 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...