BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Decisão: Refatorar ou não Refatorar?

por Vikas Hazrati , traduzido por Lucas Souza em 16 Jun 2010 |

Refatoração é o processo de mudar um sistema de software de tal maneira que não seja alterado o comportamento externo do código, mas melhorando a estrutura interna. A idéia de melhorar um código já escrito é apreciada na maioria dos times ágeis. Afinal de contas, melhoria continua é algo que estas equipes se esforçam para encontrar. Entretanto, melhorar o código já existente envolve tempo e dinheiro. Será que vale a pena?

A refatoração envolve custos, que são:

  • Custo de fazer a refatoração
  • Custo de testar as mudanças
  • Custo de atualizar os testes e a documentação

Também acontece o risco de introduzirmos novos bugs no sistema se os testes de unidade e os testes de aceite não estiverem bem definidos. Em um projeto que usa XP, o risco é baixo porque assume-se que existem bons testes de unidade. Por outro lado, há diversas vantagens oferecidas pela refatoração:

  • Adicionar novas features não corrompe a estrutura do sistema
  • Melhora o entendimento do sistema
  • Mais fácil de testar
  • Mais fácil de encontrar, isolar e corrigir bugs

Quais são os paramêtros que devem afetar a decisão de refatorar? John Virgolino sugere que não deve ser complexa a matemática para mostrar os benefícios monetários da refatoração,

Você não deveria ter que fazer uma análise de negócios complexa, mantenha as coisas simples. Quanto tempo irá demorar o processo de refatorar e multiplique por um fator de custo por hora ou por dia.

60 mil dólares x 1,25 = $ 75.000

$75000 de custo / 12 meses / 22 dias de trabalho = $297.61 (Custo diário)

Agora, 3 dias para refatorar o código x $297 = $891 é o custo da refatoração (Este é o investimento a ser feito)

Na próxima mudança de código, leva-se 5 dias para funcionar o código sem a refatoração inicial (5 x $297 = $1485). Se leva-se um dia de trabalho o mesmo código que foi refeito (1 x $ 297 = $ 297)

$1485 - $297 = $1188 (Salvos) - $891 (Investimento inicial) = $297.00 economizado

Neste momento, o investimento pagou-se, e todas as economias futuras poderão ser usadas na produção de outros produtos.

Fazendo uma análise quantitativa similar Simon Johnson sugere que tem que haver um aumento da porcentagem da produtividade após a refatoração, de acordo com Simon,

Para a refatoração ser um investimento melhor do que apenas o dinheiro, você tem que melhorar a produtividade de 5 a 8% ou mais. Isto é muito mais que uma questão e eu tenho sérias dúvidas se pode ser alcançado na prática. Se seu custo de oportunidade é muito superior do que os valores representados pela "Conta B" então você está provavelmente gasta melhor o dinheiro em alguma coisa diferente, como novas features or técnicas de redução de defeitos.

Entretanto, além do custo, podem haver outras razões, devido as quais a refatoração pode ser tornar uma estratégia não viável. Mark Needham comentou sobre o dilema da refatoração citando o caso dos projectos em que os prazos são apertados. O time não vê qualquer retorno nos esforços da refatoração se eles começaram neste ponto. Mark sugere que embora haja vários benefícios na refatoração, ele raramente viu datas de entrega serem adiadas só porque a refatoração tornaria mais fácil manter o código no futuro.

Mark também sugere que algumas vezes o tempo de vida do projeto pode ser curto demais para investir-se em refatoração.

Assim, embora existam vantagens concretas envolvidas na refatoração, a decisão de refatorar ou não, em um dado momento, ou em um determinado contexto tem que ser tomada com cautela. A chave encontra-se em pesar os reais benefícios e, em seguida, pesar o que acrescenta o maior valor de negócio.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT