segunda-feira, 9 de maio de 2016

Refactoring

O refactoring é uma técnica disciplinada de reestruturação de código que consiste em mudar o a estrutura, sem alterar o comportamento do código.
Cada transformação deve ser feita em pequeno escala, mas o conjuto dessa traformações podem produzir uma estrutura significativa.
Se a traformação for pequena, é menos provável que essa alteração de errado.
A consequência é a melhora do design,reduz a complexidade para melhorar a manutenção de código fonte, e a partir daí da legibilidade, de porções de código que sem refactoring se deteriorariam.
Outra consequência é a melhora no entendimento do código, o que facilita a manutenção e evita a inclusão de defeitos.
Geralmente é motivada por alguns code smells, como por exemplo: - metodos muito longos - código duplicados
Antes de começar uma refatoração em um código é importante ter testes unitários, onde esses testes servirão para garantir que o comportamento do modulo está funcionado corretamente.
Então TDD está totalmente ligado a refactoring.
Podemos dizer que o refactoring é um ciclo interativo de trasformar o código e testa-lo para garantir a exatidão, e fazer outra pequena alteração.
Se qualquer teste falhar podemos desfazer a ultima alteração e repetir o processo de uma maneira diferente.




Algumas técnicas de Refactoring:
- Encapsulate Field – o código de fields principalmente de pojos deve ser acessados por metodos getters e setters.
- Tipos Genericos – criar tipos genericos para compartilhar código. - Substituir códigos de validação por tipos de State e Strategy.
- Substituir 'IFs' por polimorfismo - Quebrar código em componetes reutilizáveis com interfaces bem definidas.
- Extrair Classes - Remover excesso de metodos para Classes.
- Extrair Metodos - quebrar grandes metodos em metodos menores (como diz Uncle Bob,"Um metodo deve ser conter até 20 linhas") 
- Mover metodos e fields para classes apropriadas
- Dar nomes a metodos e fields que revelam suas finalidades.
Muitos sistema se deterioram quando não investimos tempo em limpeza e organização. Todo sistea se degrada com o tempo, a medida que novas funcionalidades são inseridas, alteradas ou erros são corrigidos. Para evitar que o código se torne uma casa suja é importante manter um refactoring de código constante, tornando o código entendivel, claro e limpo. Assim de forma sistemática e frequente estamos investido para que o software se mantenha facil de alterar e com velocidade de desenvolvimento

Referências:

Nenhum comentário:

Postar um comentário