Refactoring ou refatoração é um processo que tem como principal objetivo tornar o
código mais legível e com maior facilidade de manutenção. Menciona-se processo,
pois refactoring não consiste em apenas alterar o código que já funciona, pois
quando há qualquer tipo de alteração, há riscos de introdução de novos bugs.
Segundo o relatório de maio de 2002 do National
Institute of Standards and Technology, o custo de um bug em fase de
desenvolvimento é de uma 1 unidade (entenda unidade como qualquer custo, como
por exemplo hora/pessoa, dólares, etc...) e após ir para produção esse
mesmo bug pode
custar até milhares de dólares. Por isso, a refatoração de código, quando
implantada desde o inicio do projeto, terá um custo muito menor.
Além do beneficio de redução de custos, a refatoração, como
tarefa diária de desenvolvimento, ajuda a manter a equipe mais cuidadosa com o
código desenvolvido, pois se um código parece estranho ele logo será corrigido,
corrigindo um possível problema o mais cedo possível.
Refactoring é algo maior, que envolve pequenos passos, testes,
disciplina e força de vontade. Refactoring é
importante quando o desenvolvedor tiver que adicionar alguma característica ao
programa, e, o código não estiver estruturado para receber esta característica.
Então, primeiro é aplicado o refactoring no código e depois é adicionada tal
característica. É importante certificar de que tenha um bom conjunto de teste
antes de fazer o refactoring.
No TDD, ou Test-Driven
Development, que é uma das práticas do XP (Extreme Programming), a
ideia é que primeiro sejam desenvolvidos os testes para só então escrever o
código necessário para que o teste passe. Com os testes devidamente criados,
temos a segurança necessária para então refatorar o código e garantir que os
mesmos não quebrarão nenhuma funcionalidade.
No TDD, temos os seguintes passos:
- Criar um teste.
- Escrever o código
- Executar o teste - ele não passará
- Reescrever o código para o teste passar.
- Rodar novamente o teste. Ele passará.
- Refatorar o código.
- Repetir quantas vezes forem necessárias, até você atingir o resultado desejado.
Três características gerais identificadas nos refactorings são:
- Estes podem ser completamente automatizadas por ferramentas de refactoring.
- Quando um refactoring é corretamente aplicado, este não introduz novos erros ao sistema.
- Refactorings mais complexos podem ser criados pela composição de outros.
- Se cada refactoring primitivo preserva o comportamento do sistema, a composição destes também irá preservar.
Refactoring tem como propósito melhorar a estrutura do código de forma a fazer um programa mais reusável e fácil de ser entendido, sendo então um aspecto importante para evolução de softwares reusáveis e frameworks. Uma característica importante é que, como o refactoring preserva o comportamento observável, se houver erros semânticos no código original, também haverá erros no código reestruturado.
- Criar um teste.
- Escrever o código
- Executar o teste - ele não passará
- Reescrever o código para o teste passar.
- Rodar novamente o teste. Ele passará.
- Refatorar o código.
- Repetir quantas vezes forem necessárias, até você atingir o resultado desejado.
Três características gerais identificadas nos refactorings são:
- Estes podem ser completamente automatizadas por ferramentas de refactoring.
- Quando um refactoring é corretamente aplicado, este não introduz novos erros ao sistema.
- Refactorings mais complexos podem ser criados pela composição de outros.
- Se cada refactoring primitivo preserva o comportamento do sistema, a composição destes também irá preservar.
Refactoring tem como propósito melhorar a estrutura do código de forma a fazer um programa mais reusável e fácil de ser entendido, sendo então um aspecto importante para evolução de softwares reusáveis e frameworks. Uma característica importante é que, como o refactoring preserva o comportamento observável, se houver erros semânticos no código original, também haverá erros no código reestruturado.
Nenhum comentário:
Postar um comentário