🚀 Capítulo 07: Clean Code (Tema: Marie Kondo)
NOTE
Este capítulo utiliza a temática de Marie Kondo para explicar o Clean Code. Um código limpo e organizado traz alegria; um código bagunçado faz a equipe chorar!
1. 🎯 Objetivo da Aula
Compreender o conceito de Clean Code (Código Limpo), entendendo a importância da legibilidade, do uso de nomes significativos e de funções pequenas para a manutenção do software.
2. 🏢 O Cenário Prático (Seu Desafio)
Marie Kondo é uma famosa especialista em organização. Ela ensina que devemos guardar apenas o que nos traz alegria e manter a casa tão organizada que qualquer pessoa consiga achar o que precisa em segundos.
No mundo do código, nós fazemos exatamente o oposto na maioria das vezes!
- Escrevemos códigos com nomes de variáveis como
x,yetemp. - Criamos funções gigantescas com 500 linhas de código que fazem mil coisas ao mesmo tempo.
- Deixamos códigos comentados e velhos lá dentro “só por garantia”.
O computador não se importa com a bagunça; ele processa qualquer coisa. Mas nós escrevemos código para outros seres humanos lerem! Se o seu código for uma bagunça, quando você precisar consertar um erro daqui a 6 meses, você vai gastar horas só para entender o que você mesmo fez! Seu desafio é aplicar o método Marie Kondo no seu código!
🧠 Fundamentos: A Teoria Traduzida
Clean Code é um termo popularizado por Robert C. Martin no livro de mesmo nome. Significa escrever um código que seja fácil de ler, fácil de entender e fácil de alterar.
✨ Regras Básicas do Código Limpo:
1. Nomes Significativos:
- Ruim:
int d;(Dias? Distância? Dado?) - Bom:
int dias_desde_a_criacao; - Ruim:
void proc(); - Bom:
void processar_pagamento();
2. Funções Pequenas:
Uma função deve ser pequena e fazer apenas uma coisa. Se ela faz duas coisas, divida-a em duas funções!
- Exemplo: Uma função chamada
salvar_usuario()não deve também enviar o e-mail de boas-vindas. Crie uma funçãoenviar_email()separada!
3. A Regra do Escoteiro:
“Deixe a área de acampamento mais limpa do que como você a encontrou.” Se você for mexer em um arquivo de código antigo e encontrar uma variável com nome ruim, mude para um nome bom! Melhore o código aos poucos.
4. 📖 Exemplo Guiado: O Código que Traz Alegria
Olhe este código confuso:
// Verifica se o usuário pode comprar
if (u.stat == 1 && u.age >= 18 && u.cred > 100) { ... }Agora veja o mesmo código aplicando Clean Code:
bool pode_comprar = usuario.esta_ativo() &&
usuario.eh_maior_de_idade() &&
usuario.tem_credito_suficiente();
if (pode_comprar) { ... }O segundo código não precisa nem de comentários! Ele se explica sozinho!
5. 🛠️ Prática Obrigatória 1: Refatorando Nomes
Melhore os nomes das variáveis abaixo para que fiquem no padrão Clean Code:
int a = 30;(A variável guarda a idade de um cliente).float v = 1500.50;(A variável guarda o valor total da compra).bool flag = true;(A variável indica se o usuário está logado no sistema).
6. 🛠️ Prática Obrigatória 2: Funções Multifuncionais
Você encontrou uma função chamada calcular_media_e_gerar_boletim_e_enviar_por_email().
- Quantas coisas essa função está fazendo?
- Como você aplicaria o Clean Code nela para resolver o problema?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 07 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_07_clean_code.md
│ └── codigos/
│ └── cap07/
│ └── codigo_limpo.cpp💡 Checkpoint de Lógica
Escrever código limpo dá mais trabalho no início. Você gasta mais tempo pensando em bons nomes e quebrando funções. Mas esse tempo investido volta em dobro no futuro quando você não precisar perder tempo decifrando códigos confusos!
10. 🔥 Desafio de Fixação
Pesquise o que significa o termo KISS (Keep It Simple, Stupid) na Engenharia de Software.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
int idade_cliente = 30;float valor_total_compra = 1500.50;bool usuario_esta_logado = true;Gabarito da Prática 2:- Está fazendo 3 coisas diferentes.
- Dividindo-a em 3 funções menores e focadas:
calcular_media()gerar_boletim()enviar_boletim_por_email()