Top Posts

Série AngularJS Resolvendo problemas com rotas AngularJS 1.2.x

Continue lendo

Série Refactoring na prática 1

Posted by camilolopes | Posted in Java | Posted on 05-01-2009

2

refactor-blouse

Salve! Salve! Pessoal! Antes de apresentar o primeiro post, quero dar um feliz ano novo a todos, com muita paz e saúde.

Durante o período de 30/12/08 à 04/01/09 que fiquei camilo-off, onde estava curtindo um pouco essas férias, fique pensando, qual será o primeiro post para 2009? Ai veio, “que tal completar aquela série refactoring 2008? Porém, com a parte prática conforme prometi”. Sendo assim, a promessa está sendo paga. Rs… Hoje vou mostrar algumas práticas de refactoring a nível de código. Claro que será em Java code, como dizem, será “mão na massa”. Veremos algumas situações que devemos aplicar a técnica quando estamos programando.

Para ficar mais emocionante coloquei o assunto em série, sendo esta, a primeira de outras que teremos. Um livro que recomendo para quem deseja estudar o assunto é o do Fowler, é realmente fantástico esse livro.

Lets go…

Link Recomendado

Refatoração

Vantagens/Desvantagens e ferramentas

Refactoring e Manutenção de Software

Refatoração em código Java na prática Nova Coluna Imasters!

Obs.: serão apresentados apenas trechos de códigos referentes ao assunto. Não há necessidade de apresentar toda linha de códigos de uma classe, uma vez que estes não refletem no assunto em questão.

Para quem não lembra, o que é refactoring lá vai uma breve descrição. Para maiores informações sobre, basta acessar os links acima.

Breve descrição

Refactoring: é o processo de alterar um Software sem mudar seu comportamento. Um Software refatorado deve executar da mesma forma que antes da aplicação da técnica. A vantagem de aplicar essa técnica dentro do ambiente de produção é que ela promove um desenvolvimento rápido e facilita na manutenção do Software.

Este post está dividido:

  • Motivação do uso da técnica

  • A mecânica para executar a técnica

  • Um exemplo

Obs.: O nome da técnica terá como referência o sugerido por Fowler. Claro que, você programador pode dar o nome que achar conveniente. Por boas práticas, dei preferência manter a nomeação de um dos pais da refatoração.

Técnica: Expressão Condicional

A situação para aplicar essa técnica, é algo bastante comum. Quem aqui nunca ouviu e/ou desenvolveu expressões condicionais retornando o mesmo resultado?

Ao se deparar com uma situação acima, temos que aplicar a técnica de refactoring para deixarmos o código mais limpo e facilitar o entendimento. Veja abaixo a real motivação para aplicação da técnica.

Motivação

Em alguns blocos de códigos é possível encontrar expressões condicionais remetendo a um mesmo resultado. Assim, condensar as expressões em apenas uma, pode ser considerado uma técnica de refatorar. Condensar as expressões condicionais é importante pelos seguintes motivos:

a) Primeiro: com apenas uma expressão condicional torna a verificação mais clara, mostrando o que está realmente executando uma única verificação. Ao contrário quando se tem condições separadas, onde transmite a impressão de ter verificações independentes.

b) Segundo: com as expressões condensadas, fica mais fácil de aplicar outras técnicas de refatoração, a partir do momento em que se têm códigos mais claros.

Mecânica

A mecânica da técnica de refatoração a seguir, é para uma situação semelhante ao code 1.

a) verificar se nenhuma das expressões condicionais causa efeito colateral, ou seja,

alteração em uma das mudanças faz o programa não funcionar como antes. Caso haja,

esse procedimento não deve ser executado;

b) substituir um conjunto de condicionais por apenas uma expressão condicional usando

operadores lógicos;

c) compilar e testar.

Exemplo

O code 1 apresenta expressões condicionais remetendo o mesmo resultado, conforme é apresentado nas linhas 2, 3 e 4, o que dificulta a leitura do código. Imagine isso com mais expressões, onde há mais linhas para serem compreendidas. O code 1 apresenta um código não refatorado.

1. double valorPorIncapacidade(){//calcular o valor incapacidade

2. if(_antiguidade <2) return 0;

3. if(_mesesIncapacitado > 12)return 0;

4. if(_eTempoParcial)return 0;}}

code 1 – Expressões condicionais que retornam o mesmo resultado. (Código não refatorado)

Código refatorado code 2 consolidou as expressões condicionais utilizando o operador “OU” para obter único resultado, como pode ser visto nas linhas 2 e 3.

1. double valorPorIncapacidade(){//calcular o valor por incapacidade

2. if((_antiguidade < 2)||(_mesesIncapacitado > 12)|| (_eTempoParcil))

3. return 0;

4. }

code 2 – Consolidar Expressão Condicional. (código refatorado)

Observe ambos os codes e veja à essência e os efeitos que a aplicação da técnica de refactoring promove. Qual código está mais fácil de ler? A manutenção se tornou mais fácil?

Muitas vezes estamos programando e não nos damos conta disso. Claro que isso pode parecer algo insignificante, pois, estamos aplicando a técnica em apenas 04 linhas de códigos. Mas, na prática sabemos que é comum encontrarmos expressões condicionais com mais de 20 linhas remetendo o mesmo resultado. Então a partir de agora ao identificar uma situação assim basta refatorar e tornar seu ambiente de produção mais saudável.

Vale salientar que a técnica de refatoração não é algo fechado, ou seja, ela não define quantas expressões condicionais são necessárias para aplicar a técnica. Isso tudo vai depender da equipe de desenvolvimento definir quando deve ser aplicada a técnica. Essa regra também vale para outras técnicas de refactoring.

Bom, vou ficando por aqui! Um abraço para todos! Espero que tenham gostado e até a próxima. Have a nice week, everybody!

Related Posts with Thumbnails

Comments (2)

Existe o catálogo de refactoring to Fowler disponível na web no link abaixo:

http://www.refactoring.com/catalog/index.html

Bom dia…

Muito legal esse post sobre refactoring!
Estou esperando o resto da serie!

abraaaço

Write a comment