🚀 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, y e temp.
  • 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ção enviar_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:

  1. int a = 30; (A variável guarda a idade de um cliente).
  2. float v = 1500.50; (A variável guarda o valor total da compra).
  3. 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().

  1. Quantas coisas essa função está fazendo?
  2. Como você aplicaria o Clean Code nela para resolver o problema?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 07 EngSoftware) e clique em Commit to main.
  2. 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:

  1. int idade_cliente = 30;
  2. float valor_total_compra = 1500.50;
  3. bool usuario_esta_logado = true; Gabarito da Prática 2:
  4. Está fazendo 3 coisas diferentes.
  5. Dividindo-a em 3 funções menores e focadas:
    • calcular_media()
    • gerar_boletim()
    • enviar_boletim_por_email()

Capitulo Anterior | Proximo Capitulo