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
380
[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
[DDD Europe 2024] DDD on the frontend
talyssonoc
0
180
[RailsConf Detroit 2024] Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
450
[JSConf Chile 2023] How do DDD and software architecture play on the frontend
talyssonoc
0
560
[ReactConf Brazil 2022] 7 regras para abstrair gerência de estado usando custom hooks
talyssonoc
0
420
[Codeminer42 Brownbags] Fundamentos de arquitetura de software
talyssonoc
0
110
[Codeminer42 Brownbags] JavaScript - as partes essenciais
talyssonoc
0
200
[RanchoDev 2021] Desacoplando gerência de estado do resto da aplicação com custom hooks
talyssonoc
0
58
[Unifenas JOIN 2021] Introdução ao Node - Primeiros passos
talyssonoc
0
87
[TDCSP 2019 - Ruby] Além dos services e query objects - implementando abstrações escaláveis em aplicações Rails
talyssonoc
1
350
Other Decks in Programming
See All in Programming
初めてのiOS関連GitHub ActionsをMarketplaceに公開するまでの実録
konifar
3
200
ESLint Rule により事業, 技術ドメインに沿った制約と誓約を敷衍させるアプローチのすゝめ
shinyaigeek
1
2.7k
Mergeable Libraryで 高速なアプリ起動を実現しよう!
giginet
PRO
1
1.8k
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
390
どうしてこうなった?から理解するActive Recordの関連の裏側
willnet
5
510
LangGraphでのHuman-in-the-Loopの実装
os1ma
3
550
Wallet API, Verifier APIで実現するIDカード on iPhoneの世界
shitamori1272
1
320
Playwrightから始めるVisual Regression Testingのススメ by とっと
totto2727
2
1.8k
全力の跳躍を捉える計測アプリを作る
ogijun2018
0
1k
Meet BrowserEngineKit
swiftty
0
190
フロントエンドカンファレンス北海道2024 『小規模サイトでも使えるVite 〜HTMLコーディングをよりスマートに〜』長谷川広武(ハム)
h2ham
1
2.5k
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
200
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
15
910
Unsuck your backbone
ammeep
667
57k
Building Adaptive Systems
keathley
36
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
27
8.9k
Thoughts on Productivity
jonyablonski
65
4.2k
Atom: Resistance is Futile
akmur
261
25k
The Brand Is Dead. Long Live the Brand.
mthomps
53
37k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
For a Future-Friendly Web
brad_frost
173
9.3k
Building an army of robots
kneath
302
42k
Building a Modern Day E-commerce SEO Strategy
aleyda
35
6.8k
Documentation Writing (for coders)
carmenintech
65
4.3k
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