RONG>Uma visão geral das ferramentas: Refactoring, Code Formatter e Clean Up

Aprenda a utilizar as ferramentas do Eclipse para reorganizar, formatar e “limpar” o código fonte

Este artigo tem por objetivo apresentar as ferramentas Refactoring, Code Formatter e Clean Up do Eclipse 3.3.0. Vale lembrar que na edição número 46 da Java Magazine foi publicado um artigo abrangente sobre Refactoring, e que os descritos naquele artigo não serão detalhados neste.

Para ajudar a entender o artigo, utilizarei como exemplo a seguinte situação: um sistema daemon foi desenvolvido em Java SE, com o intuito de processar pedidos de compra de materiais, que passavam por diversos status durante seu ciclo de vida – um workflow. As mudanças de status podem ocorrer por intervenção dos usuários ou por integração com outros sistemas, dependendo do status em que cada pedido se encontra. O sistema é executado em horários pré-definidos e envia e-mails aos funcionários responsáveis, informando o resultado do processamento (por exemplo: mudanças de status ou pedidos com pendências registradas há mais de três dias).

Esse sistema estava em produção e funcionava bem. No entanto, surgiu uma demanda para evolução do sistema e fez-se necessária uma avaliação do código que estava pronto, para que fosse possível atender a três novos requisitos: (1) possibilidade de configurar dias e horários distintos para execução de cada uma das rotinas de envio de e-mail, (2) registro de diferentes tipos de pedido de compra e (3) flexibilidade no gerenciamento dos estados pelos quais passam os pedidos de cada tipo.

Para manter o foco em aprimorar um código já existente, apresentarei a avaliação e alterações feitas para atender diretamente ao requisito 1, que já existia no sistema, mas não possuía a flexibilidade desejada, como veremos a seguir.

Vamos considerar que o sistema que está em produção é composto pelas classes apresentadas na Figura 1. Podemos perceber pelo menos duas características que não estão de acordo com as boas práticas de programação: as classes não estão devidamente separadas em pacotes, e os fontes apresentam “avisos” (warnings) indicando que existem possíveis falhas no código.

 

Figura 1. Classes do sistema em produção

Refactoring

O primeiro passo é verificar se os pacotes, classes, métodos, atributos e variáveis apresentam nomes apropriados, tanto no que diz respeito ao que eles fazem ou representam, quanto em relação à adequação às Java Code Conventions.

Rename

Com esse refactoring é possível alterar nomes de pacotes, classes, métodos, atributos e variáveis.

 

Podemos renomear qualquer um desses elementos de forma bastante simples, através do refactoring Rename. Para usá-lo, selecione o elemento a ser renomeado, e acesse o menu Refactor>Rename... Se for necessário definir opções para o refactoring, basta clicar na seta ao final da dica que aparece quando o novo nome está sendo digitado, e em seguida selecionar a opção Open Rename Dialog... Como exemplo, vamos renomear a classe SistemaPedidos para Main, já que seu objetivo é apenas dar início à execução da aplicação. A Figura 2 mostra o refactoring Rename sendo aplicado ao código.

 

Figura 2. Refactoring Rename

 

Move

Possibilita alterações na estrutura de pacotes do sistema de forma prática, pois o próprio refactoring se encarrega de corrigir as referências às classes na nova estrutura.

 

As classes do exemplo não estão agrupadas por pacotes, e o Eclipse ajuda a resolver esse problema: basta criar sua estrutura de pacotes (isso precisa ser feito manualmente) e arrastar as classes para dentro deles. Outra alternativa para mover uma classe é clicar sobre ela e em seguida acessar o menu Refactor>Move... Uma tela se abrirá com os possíveis locais para onde ela pode ser movida, como mostra a Figura 3.

 

Figura 3. Caixa de diálogo do refactoring Move

 

Uma vez que as classes são movidas para seus respectivos pacotes, o código deverá ficar como apresenta na Figura 4.

 

Figura 4. Nova estrutura de pacotes

Os pacotes criados são apenas sugestão para organizar as classes.

Agora que a estrutura de pacotes está definida, é possível trabalhar no código e começar a programar o requisito “possibilidade de configurar dias e horários distintos para execução de cada uma das rotinas de envio de e-mail”.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo