BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Decisão: Refatorar ou não Refatorar?

Decisão: Refatorar ou não Refatorar?

Favoritos

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.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT