Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Workshop SorocabaJS 2018] Transformando código...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Talysson de Oliveira Cassiano
December 08, 2018
Programming
470
1
Share
[Workshop SorocabaJS 2018] Transformando código spaghetti em código lasagna
Talysson de Oliveira Cassiano
December 08, 2018
More Decks by Talysson de Oliveira Cassiano
See All by Talysson de Oliveira Cassiano
[Tropical on Rails 2026] Privacy on Rails
talyssonoc
1
67
[Nerdearla Argentina 2025] LLMs as domain experts
talyssonoc
0
44
[TDC SP 2025] Então você quer ser um praticante de DDD
talyssonoc
0
60
[DDD Brasil] Então você quer ser um praticante de DDD
talyssonoc
0
39
[Rails World 2025 Lighting Talks] Where is it?! - Avoiding the XY Problem
talyssonoc
0
38
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
100
[TDC Floripa 2025] Modelagem de domínios como construção de teorias
talyssonoc
0
76
[Encontro GURU-SP e ELUG] Ruby on Fails - Tratamento de erros de maneira efetiva e com convenções do Rails
talyssonoc
0
63
[DDD Europe 2024] DDD on the frontend
talyssonoc
0
340
Other Decks in Programming
See All in Programming
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
280
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
220
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
170
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
280
GitHub Copilot CLIのいいところ
htkym
2
580
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
170
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
170
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
330
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
110
Are We Really Coding 10× Faster with AI?
kohzas
0
220
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
9
890
要はバランスからの卒業 #yumemi_grow
kajitack
0
190
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
770
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
Site-Speed That Sticks
csswizardry
13
1.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
190
What's in a price? How to price your products and services
michaelherold
247
13k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
170
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
510
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
200
Transcript
Transformando código spaghetti em código lasagna
Talysson @talyssonoc talyssonoc.github.io Web-dev / Codeminer42
O que é código spaghetti?
Casos de uso Regras de negócio Banco de dados HTTP
Serviços externos Tratamento de erros Logs
Casos de uso Regras de negócio Banco de dados HTTP
Serviços externos Tratamento de erros Serialização
Código spaghetti é difícil de mudar
“ … if you're afraid to change something it is
clearly poorly designed - Martin Fowler
Como escrever código que nos passa confiança ao mudá-lo? ?
• Separação de conceitos • Princípio da responsabilidade única •
Inversão de dependência • Testes automatizados
Separação de conceitos + Responsabilidade única Junte o que muda
pelo mesmo motivo, separe o que muda por motivos diferentes
None
None
None
X Fere o princípio da responsabilidade única
X Fere o princípio da responsabilidade única X Fere a
separação de conceitos
A parte mais importante do seu software Arquitetura
Arquitetura é como as unidades do seu software interagem priorizando
as decisões importantes e postergando as menos importantes
Arquitetura não é organização de arquivos
Registro de hóspede
Registro de hóspede Programa
Registro de hóspede Programa Checa documentos Valida cartão de crédito
Aplica regras extras
Registro de hóspede Programa Checa documentos Valida cartão de crédito
Aplica regras extras Salva os dados
Registro de hóspede Checa documentos Valida cartão de crédito Aplica
regras extras Salva os dados Caso de uso (aplicação) Regras de negócio (domínio)
Registro de hóspede Checa documentos Valida cartão de crédito Aplica
regras extras Salva os dados Caso de uso (aplicação) Regras de negócio (domínio) Portas de entrada
Registro de hóspede Checa documentos Valida cartão de crédito Aplica
regras extras Salva os dados Caso de uso (aplicação) Regras de negócio (domínio) Portas de entrada Exterior (infraestrutura)
Entrada Aplicação Domínio Infraestrutura X Camadas
Dependa de interfaces, não implementações Inversão de dependência
None
Testes automatizados
Aplicação Domínio Infraestrutura Portas de entrada E2E Integration Unit
Mãos na massa!
X
None
• Buscar produções • Criar usuários • Adicionar à prateleira
do usuário • Remover da prateleira do usuário
None