Refactoring - fga-eps-mds/A-Disciplina-MDS-EPS GitHub Wiki
Qualities of Quality
Dívidas técnicas: https://www.youtube.com/watch?v=pqeJFYwnkjE
Refatoração
O que não é Refatoração
- Encontrar e arrumar bugs enquanto faz o código, de maneira que essa ação é considerada apenas como melhoria de código.
- Intensificar o tratamento de erros, que também é considerado apenas como melhoria da cobertura de código.
- Código defensivo, de maneira que erros aplicação sejam raros.
- Tornar o código mais testável.
Em resumo, melhoria de cobertura e tratamento de erros não é considerado como refatoração de código.
Quando a refatoração é necessária?
Para se encontrar um bug no código
Ao se adicionar uma nova funcionalidade
Durante a visão de código
Qualquer hora
De tempos em tempos o código precisa ser revisado para refatoração, de forma que fique mais limpo.
Para quê utilizar a refatoração?
- Eliminação de código duplicado, fazendo com que a repetição de código seja nivelada ao mínimo possível.
- Elimanação de código morto, excluindo linhas de código que não acrescentam nada à aplicação.
- Melhorar a lógica utilizada no sistema, de maneira que o design seja mais claro para programadores de fora.
- Melhorar o uso da linguagem, otimizando o desempenho.
Bad Smells in code (mal cheiro de código)
Bad smell é uma situação na qual a estrutura do programa pode ser melhorada com refatoração, como por exemplo: Duplicação de código e classe ou métodos longos.
Identificando mal cheiro de código - métricas de código fonte
- Long Method/ God Method:
- Feature Envy:
- Divergent Change:
- Shotgun Surgery:
- Refused Bequest:
- Comments:
Exemplo de Refatoração
A refatoração deve resultar em um código mais limpo, que seja legível, claro e com o mínimo de repetições. Na imagem abaixo podemos fazer uma analogia a refatoração:
Ferramentas das métricas
Relação entre Testes e Refatoração
Refatoração e Testes
Refatoração e TDD
Tipos de Refatoração
Treinamento
- Incluir descrição do treinamento/DOJO - passo a passo - etapas
- Registrar os detalhes da dinâmica
- Infraestrutura Necessária para a dinâmica
- Código referência no projeto da disciplina (00-Disciplina)
- Treinamento em, pelo menos 2 linguagens
Referências
Engenharia de software. Refactoring.
Ian Sommerville. Engenharia de Software, 9ª Edição. Pearson Education, 2011.