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
[Nerdearla Argentina 2025] LLMs as domain experts
talyssonoc
0
4
[TDC SP 2025] Então você quer ser um praticante de DDD
talyssonoc
0
15
[DDD Brasil] Então você quer ser um praticante de DDD
talyssonoc
0
17
[Rails World 2025 Lighting Talks] Where is it?! - Avoiding the XY Problem
talyssonoc
0
23
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
68
[TDC Floripa 2025] Modelagem de domínios como construção de teorias
talyssonoc
0
55
[Encontro GURU-SP e ELUG] Ruby on Fails - Tratamento de erros de maneira efetiva e com convenções do Rails
talyssonoc
0
38
[DDD Europe 2024] DDD on the frontend
talyssonoc
0
290
[RailsConf Detroit 2024] Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
670
Other Decks in Programming
See All in Programming
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
1.5k
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
2k
Claude Agent SDK を使ってみよう
hyshu
0
1.5k
Verilator + Rust + gRPC と Efinix の RISC-V でAIアクセラレータをAIで作ってる話 RTLを語る会(18) 2025/11/08
ryuz88
0
210
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
180
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
880
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
240
Kotlin 2.2が切り拓く: コンテキストパラメータで書く関数型DSLと新しい依存管理のかたち
knih
0
290
Register is more than clipboard
satorunooshie
1
380
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
120
data-viz-talk-cz-2025
lcolladotor
0
110
Inside of Swift Export
giginet
PRO
1
340
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Building an army of robots
kneath
306
46k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Navigating Team Friction
lara
190
15k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Music & Morning Musume
bryan
46
6.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Building Adaptive Systems
keathley
44
2.8k
BBQ
matthewcrist
89
9.9k
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