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 spaghetti em código lasagna
Search
Talysson de Oliveira Cassiano
December 08, 2018
Programming
1
330
[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
[JSConf Chile 2023] How do DDD and software architecture play on the frontend
talyssonoc
0
410
[ReactConf Brazil 2022] 7 regras para abstrair gerência de estado usando custom hooks
talyssonoc
0
410
[Codeminer42 Brownbags] Fundamentos de arquitetura de software
talyssonoc
0
95
[Codeminer42 Brownbags] JavaScript - as partes essenciais
talyssonoc
0
180
[RanchoDev 2021] Desacoplando gerência de estado do resto da aplicação com custom hooks
talyssonoc
0
52
[Unifenas JOIN 2021] Introdução ao Node - Primeiros passos
talyssonoc
0
78
[TDCSP 2019 - Ruby] Além dos services e query objects - implementando abstrações escaláveis em aplicações Rails
talyssonoc
1
350
[FrontInVale 2018] Onde é que está?!
talyssonoc
0
120
[BrazilJS on the road Sorocaba 2018] Transformando código spaghetti em código lasagna
talyssonoc
1
1.1k
Other Decks in Programming
See All in Programming
ScalarDBを用いたマイクロサービスにおけるデータ管理 (Database Engineering Meetup #2)
scalar
0
110
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
220
ゆるい個人開発のススメ
kuroppe1819
10
990
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
640
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
250
Site Reliability Engineering for GMO
pyama86
7
1k
見た目から始める生産性向上
ikumatadokoro
7
820
Snowflakeで眠ったデータを起こそう!
estie
0
110
Elm Form Validation
bkuhlmann
0
510
What We Can Learn From OSS
inouehi
0
420
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
200
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
280
Featured
See All Featured
Being A Developer After 40
akosma
57
580k
Six Lessons from altMBA
skipperchong
21
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
16
2.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
19
1.7k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Embracing the Ebb and Flow
colly
80
4.1k
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