Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[Workshop SorocabaJS 2018] Transformando código...
Search
Talysson de Oliveira Cassiano
December 08, 2018
Programming
480
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[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
[Explore DDD 2026] LLM AIs as domain experts
talyssonoc
0
70
[DDD Europe 2026] So you want to be a DDD practitioner
talyssonoc
0
140
[Tropical on Rails 2026] Privacy on Rails
talyssonoc
1
150
[Nerdearla Argentina 2025] LLMs as domain experts
talyssonoc
0
78
[TDC SP 2025] Então você quer ser um praticante de DDD
talyssonoc
0
92
[DDD Brasil] Então você quer ser um praticante de DDD
talyssonoc
0
68
[Rails World 2025 Lighting Talks] Where is it?! - Avoiding the XY Problem
talyssonoc
0
75
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
140
[TDC Floripa 2025] Modelagem de domínios como construção de teorias
talyssonoc
0
120
Other Decks in Programming
See All in Programming
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
160
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
970
AWSに止められる覚悟してますか?
morizo_1984
2
540
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
640
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
golang-bob.pdf
iwatsukayura
0
130
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Statistics for Hackers
jakevdp
799
230k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Typedesign – Prime Four
hannesfritz
42
3.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Designing for Performance
lara
612
70k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The browser strikes back
jonoalderson
0
1.8k
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