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
3
[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
11
[Rails World 2025 Lighting Talks] Where is it?! - Avoiding the XY Problem
talyssonoc
0
19
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
66
[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
37
[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
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
220
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
200
CSC305 Lecture 01
javiergs
PRO
1
400
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
150
開発生産性を上げるための生成AI活用術
starfish719
3
360
What's new in Spring Modulith?
olivergierke
1
130
明日から始めるリファクタリング
ryounasso
0
130
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
0
640
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
450
止められない医療アプリ、そっと Swift 6 へ
medley
1
140
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
390
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
480
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1371
200k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
How to train your dragon (web standard)
notwaldorf
96
6.3k
Practical Orchestrator
shlominoach
190
11k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
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