VapVup👤
← Voltar
👃

Code Smells

Sinais sutis de que algo no código pode ser melhorado. Não são bugs, mas indicam problemas que vão crescer com o tempo.

🧊Analogia

O cheiro na geladeira

Sabe quando você abre a geladeira e sente um cheiro ruim, mas não vê nada estragado de cara? Você precisa investigar. Code smells são assim: o código funciona, mas algo cheira mal — e se você não resolver, vai piorar até virar um problemão.

👃Conceito

O que são Code Smells?

São padrões no código que indicam possíveis problemas de design. Não causam erros imediatos, mas aumentam a dívida técnica — tornando o código mais difícil de entender, manter e evoluir com o tempo.

👑Conceito

God Class e Feature Envy

God Class é uma classe que faz tudo — sabe demais e controla demais. Feature Envy é quando um método usa mais dados de outra classe do que da sua própria. Ambos indicam que responsabilidades estão no lugar errado.

📏Conceito

Long Method e Dívida Técnica

Métodos longos (50+ linhas) são difíceis de ler e testar. Cada atalho que tomamos gera dívida técnica — como parcelas que acumulam juros. Quanto mais demora pra refatorar, mais caro fica.

🔧Exemplo

A classe que faz tudo (God Class)

Veja como uma God Class concentra responsabilidades demais e como separar:

// ❌ God Class - faz TUDO
class PedidoService {
  criarPedido() { /* ... */ }
  calcularFrete() { /* ... */ }
  processarPagamento() { /* ... */ }
  enviarEmail() { /* ... */ }
  gerarNotaFiscal() { /* ... */ }
  atualizarEstoque() { /* ... */ }
}

// ✅ Responsabilidades separadas
class PedidoService {
  criarPedido() { /* ... */ }
}
class FreteService {
  calcularFrete() { /* ... */ }
}
class PagamentoService {
  processarPagamento() { /* ... */ }
}
class NotificacaoService {
  enviarEmail() { /* ... */ }
}
🧹Analogia

Refatoração: a faxina do código

Refatorar é como fazer faxina na casa: você não muda o que a casa faz (ainda mora nela), mas reorganiza para ficar mais fácil de viver. Faça aos poucos, regularmente — não espere a bagunça virar um episódio de acumuladores.