O documento apresenta uma introdução sobre refatoração de código, definindo-a como o processo de modificar um sistema de software para melhorar sua estrutura interna sem alterar seu comportamento externo. Apresenta também algumas técnicas de refatoração como dividir métodos grandes em menores, mover código entre classes e usar padrões de projeto como POO. Por fim, demonstra uma refatoração passo a passo de um código de exemplo.
2. Agenda
● Apresentação
● Ferramentas
● O que é Refatoração?
● Pré-Requisitos
● Por que? ( Motivação )
● Um processo contínuo…
● O medo da refatoração
● Técnicas de refatoração
● Hands On!
3. Fred Policarpo
Fibonacci / ZGSoluções desde 2007
Ciência da Computação - UFG
fredpolicarpo.github.io
linkedin.com/in/fredpolicarpo
github.com/fredpolicarpo
Me adiciona lá!
6. Introdução - O que é
Refatoração?
Refatoração (do inglês Refactoring) é o
processo de modificar um sistema de software
para melhorar a estrutura interna do código sem
alterar seu comportamento externo. - Wikipédia
7. Introdução - O que é
Refatoração?
Uma alteração feita na estrutura interna do software
para torná-lo mais fácil de entender e mais barato para
modificar sem alterar seu comportamento observável…
É uma forma disciplinada de limpar código que minimiza
as chances de introduzir bugs - Kent Beck/Martin
Fowler
9. Introdução - Por que?
Os programadores passam muito mais tempo alterando e mantendo um código
do que criando uma nova funcionalidade do zero (Bye bye Facul);
À medida que o software vai evoluindo, o código vai deteriorando e se tornando
mais suscetível a bugs e de difícil manutenção;
A refatoração deve ser um processo contínuo.
10. Lei do programador escoteiro
Teoria das Janelas Quebradas
Introdução - Por que?
11. Introdução - Por que POO/Padrões de
Projeto?
É interessante ter um alvo, uma métrica de qualidade de
software a ser atingida;
Refatoração não é necessariamente POO...
12. Introdução - Um processo
contínuo...
Um bom design inicial de código não garante a
qualidade do código ao longo do seu tempo de vida;
A evolução do código tende a deteriorá-lo caso os
devidos cuidados não sejam tomados
13. Introdução - Um processo
contínuo...
Pressão dos prazos :/
Registre como débito técnico
19. Técnicas de Refatoração:
Pequenos Passos
Os passos devem ser pequenos e simples:
Mover uma variável de método/classe;
Extrair novos métodos de trechos de código;
Mover código entre classes colaborativas;
Mover código para cima ou para baixo na hierarquia de classe
20. Técnicas de Refatoração:
Pequenos Passos
● Faça um passo desse de cada vez!
● Execute os testes e só se estiverem passando siga para a
próxima etapa =)
● Não saia refatorando tudo, se um teste falhar, vai ser cara
identificar o erro!
21. Hands On!
Falar o que é refatoração é fácil, refatorar é que são elas.
Let’s Code!
22. Dinâmica da nossa prática
1. Vou apresentar um requisito para construção de um programa;
2. Vou apresentar uma solução para esse problema;
3. Vamos identificar os “maus cheiros de código”;
4. Vamos seguir refatorando, passo a passo até chegar em uma
solução mais elegante, mais legível e o principal: mais manutenível!
23. Qual o problema que
queremos resolver?
Você deve imprimir o valor da conta de um
prontuário de um paciente de uma clínica de
saúde.
24. Qual o problema que
queremos resolver?
As diárias tem três padrões de valor:
Internação Básica: Até 3 Dias
Internação Média: De 4 a 8 dias
Internação Avançada: De 9 dias em diante
25. Qual o problema que
queremos resolver?
Regras para o cálculo das diárias
Enfermaria:
➢ Valor Básico: R$ 40,00
➢ Valor Internação média: R$ 35,00
➢ Valor Internação grave: R$ 30,00
Apartamento:
➢ Valor Básico: R$ 100,00
➢ Valor Internação média: R$ 90,00
➢ Valor Internação grave: R$ 80,00
26. Qual o problema que
queremos resolver?
Os procedimentos são classificados como Básicos, Comuns e
Avançados.
➢ Procedimentos básicos custam R$ 50,00;
➢ Procedimentos comuns custam R$ 150,00;
➢ Procedimentos avançados custam R$ 500,00;
27. Saída esperada: Uma String formatada pronta
para ser impressa
----------------------------------------------------------------------------------------------
A conta do(a) paciente Nando Reis tem valor total de __ R$ 1.210,00 __
Conforme os detalhes abaixo:
Valor Total Diárias: R$ 360,00
4 diárias em apartamento
Valor Total Procedimentos: R$ 850,00
1 procedimento avançado
2 procedimentos comuns
1 procedimento básico
Volte sempre, a casa é sua!
----------------------------------------------------------------------------------------------
29. Passo 1: Testes
Certificar-se que exista um conjunto de testes que garanta a
funcionalidade do software que será alterado
30. Passo 2: Decompor o
método imprimaConta
Separar trechos do método imprimaConta em métodos
menores e mais coesos
31. Passo 3: Mover a
contabilização de diárias
para a classe Internação
As operações sobre os dados de um objeto, devem ser
realizadas pelo próprio objeto
32. Passo 4: Mover a
contabilização de
procedimientos para a
classe apropiada
As operações sobre os dados de um objeto, devem ser
realizadas pelo próprio objeto