$30 off During Our Annual Pro Sale. View Details »
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
470
[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
9
[TDC SP 2025] Então você quer ser um praticante de DDD
talyssonoc
0
23
[DDD Brasil] Então você quer ser um praticante de DDD
talyssonoc
0
23
[Rails World 2025 Lighting Talks] Where is it?! - Avoiding the XY Problem
talyssonoc
0
28
[TDC Floripa 2025] Abordagens funcionais efetivas em TypeScript com Effect-TS
talyssonoc
0
76
[TDC Floripa 2025] Modelagem de domínios como construção de teorias
talyssonoc
0
60
[Encontro GURU-SP e ELUG] Ruby on Fails - Tratamento de erros de maneira efetiva e com convenções do Rails
talyssonoc
0
43
[DDD Europe 2024] DDD on the frontend
talyssonoc
0
310
[RailsConf Detroit 2024] Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
670
Other Decks in Programming
See All in Programming
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
愛される翻訳の秘訣
kishikawakatsumi
3
340
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
160
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
110
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3k
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
170
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
140
GoLab2025 Recap
kuro_kurorrr
0
780
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
170
Patterns of Patterns
denyspoltorak
0
320
Featured
See All Featured
Marketing to machines
jonoalderson
1
4.3k
Everyday Curiosity
cassininazir
0
110
Technical Leadership for Architectural Decision Making
baasie
0
180
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
340
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Chasing Engaging Ingredients in Design
codingconduct
0
84
4 Signs Your Business is Dying
shpigford
186
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
[SF Ruby Conf 2025] Rails X
palkan
0
560
Designing Experiences People Love
moore
143
24k
A Tale of Four Properties
chriscoyier
162
23k
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