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
Talysson de Oliveira Cassiano
December 08, 2018
Programming
1
460
[Workshop SorocabaJS 2018] Transformando código spaghetti em código lasagna
Talysson de Oliveira Cassiano
December 08, 2018
Tweet
Share
More Decks by Talysson de Oliveira Cassiano
See All by Talysson de Oliveira Cassiano
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
65
[TDC Floripa 2025] Modelagem de domínios como construção de teorias
talyssonoc
0
54
[Encontro GURU-SP e ELUG] Ruby on Fails - Tratamento de erros de maneira efetiva e com convenções do Rails
talyssonoc
0
35
[DDD Europe 2024] DDD on the frontend
talyssonoc
0
280
[RailsConf Detroit 2024] Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
670
[JSConf Chile 2023] How do DDD and software architecture play on the frontend
talyssonoc
0
830
[ReactConf Brazil 2022] 7 regras para abstrair gerência de estado usando custom hooks
talyssonoc
0
480
[Codeminer42 Brownbags] Fundamentos de arquitetura de software
talyssonoc
0
140
[Codeminer42 Brownbags] JavaScript - as partes essenciais
talyssonoc
0
250
Other Decks in Programming
See All in Programming
為你自己學 Python - 冷知識篇
eddie
1
350
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
130
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
AIでLINEスタンプを作ってみた
eycjur
1
230
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
2.1k
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
1
640
Cache Me If You Can
ryunen344
2
4k
testingを眺める
matumoto
1
140
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
570
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
4.3k
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
2
270
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.5k
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Code Review Best Practice
trishagee
71
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
GraphQLとの向き合い方2022年版
quramy
49
14k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Designing Experiences People Love
moore
142
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
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