🚀 Capítulo 10: Refatoração (Tema: Indiana Jones)
NOTE
Este capítulo utiliza a temática de Indiana Jones para explicar a Refatoração. Entre em templos de código antigo, desative as armadilhas e reforce as estruturas sem mudar o templo de lugar!
1. 🎯 Objetivo da Aula
Compreender o conceito de Refatoração (Refactoring) e de Débito Técnico, entendendo como melhorar a estrutura interna do código sem alterar o que ele faz para o usuário.
2. 🏢 O Cenário Prático (Seu Desafio)
O arqueólogo Indiana Jones vive entrando em templos antigos e cheios de armadilhas. O templo está de pé há séculos e cumpre a sua função (guardar o tesouro), mas as paredes estão rachadas, as pedras estão soltas e se você pisar no lugar errado, tudo desaba!
No desenvolvimento de software, um código antigo que foi sendo mexido por várias pessoas sem cuidado vira esse templo assustador (chamamos de Código Legado). Ele funciona, mas dá medo de mexer! A Refatoração é o trabalho de arqueologia moderna: você entra no código, limpa a bagunça, renomeia as variáveis ruins, divide as funções gigantes, mas não muda o que o sistema faz! O usuário nem percebe que você mexeu. Seu desafio é desarmar as armadilhas do código!
🧠 Fundamentos: A Teoria Traduzida
🧹 O que é Refatoração?
É o processo de modificar um sistema de software para melhorar sua estrutura interna, sua legibilidade e sua facilidade de manutenção, sem alterar seu comportamento externo.
- Se você refatorou o código da calculadora, ela deve continuar somando . Se ela começar a dar , você não refatorou, você quebrou o sistema!
💳 O Débito Técnico (A Dívida):
Muitas vezes, para entregar um projeto rápido para o cliente, a equipe faz o código “de qualquer jeito” (com pressa).
- Isso resolve o problema hoje, mas cria uma dívida.
- Igual a um cartão de crédito: se você não pagar a dívida logo (refatorando o código), os juros acumulam. No futuro, adicionar qualquer função simples vai demorar semanas porque o código ficou muito bagunçado!
4. 📖 Exemplo Guiado: Técnicas Básicas
Como o “Indiana Jones do código” trabalha?
- Extrair Função: Ele vê uma função de 100 linhas e percebe que 10 linhas servem só para calcular o imposto. Ele arranca essas 10 linhas e cria uma função chamada
calcular_imposto(). - Renomear Variável: Ele encontra a variável
int x;e muda paraint quantidade_de_itens;. O código fica muito mais fácil de ler!
5. 🛠️ Prática Obrigatória 1: Refatoração ou Nova Função?
Diga se a ação descrita é uma Refatoração ou a criação de uma Nova Funcionalidade:
- Você alterou o código do site para que ele agora também aceite pagamentos com PIX (antes só aceitava cartão).
- Você pegou um arquivo de código confuso e dividiu em 3 arquivos menores e mais organizados, e o site continuou funcionando exatamente do mesmo jeito.
- Você mudou o nome de uma função de
calc()paracalcular_desconto_do_cliente().
6. 🛠️ Prática Obrigatória 2: Pagando a Dívida
Um gerente diz: “Não temos tempo para refatorar o código. Precisamos entregar novos recursos para o cliente toda semana!“.
- Baseando-se no conceito de Débito Técnico, o que vai acontecer com a velocidade da equipe daqui a 6 meses se eles nunca pararem para refatorar o código?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 10 EngSoftware) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
extra_engenharia_de_software/
├── capitulos/
│ ├── capitulo_10_refatoracao.md
│ └── codigos/
│ └── cap10/
│ └── templo_refatorado.cpp💡 Checkpoint de Lógica
Para refatorar com segurança, você precisa de testes automáticos. Se você mudar o código e os testes continuarem passando (ficando verdes), você sabe que não quebrou nada! Veremos isso no próximo capítulo.
10. 🔥 Desafio de Fixação
Pesquise o livro Refatoração de Martin Fowler, o clássico sobre o assunto.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Nova Funcionalidade (O comportamento externo mudou, o sistema agora faz algo que não fazia antes).
- Refatoração (Melhorou a estrutura interna sem mudar o comportamento).
- Refatoração (Melhorou a legibilidade sem mudar o comportamento). Gabarito da Prática 2:
- A velocidade da equipe vai cair drasticamente. O código vai ficar tão confuso e cheio de “gambiarras” que fazer qualquer alteração simples vai levar dias ou semanas, porque mexer em uma parte vai quebrar outras três sem querer!