Slide 1

Slide 1 text

Transformando código spaghetti em código lasagna

Slide 2

Slide 2 text

Talysson @talyssonoc talyssonoc.github.io Web-dev / Codeminer42

Slide 3

Slide 3 text

O que é código spaghetti?

Slide 4

Slide 4 text

Casos de uso Regras de negócio Banco de dados HTTP Serviços externos Tratamento de erros Logs

Slide 5

Slide 5 text

Casos de uso Regras de negócio Banco de dados HTTP Serviços externos Tratamento de erros Serialização

Slide 6

Slide 6 text

Código spaghetti é difícil de mudar

Slide 7

Slide 7 text

“ … if you're afraid to change something it is clearly poorly designed - Martin Fowler

Slide 8

Slide 8 text

Como escrever código que nos passa confiança ao mudá-lo? ?

Slide 9

Slide 9 text

● Separação de conceitos ● Princípio da responsabilidade única ● Inversão de dependência ● Testes automatizados

Slide 10

Slide 10 text

Separação de conceitos + Responsabilidade única Junte o que muda pelo mesmo motivo, separe o que muda por motivos diferentes

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

X Fere o princípio da responsabilidade única

Slide 15

Slide 15 text

X Fere o princípio da responsabilidade única X Fere a separação de conceitos

Slide 16

Slide 16 text

A parte mais importante do seu software Arquitetura

Slide 17

Slide 17 text

Arquitetura é como as unidades do seu software interagem priorizando as decisões importantes e postergando as menos importantes

Slide 18

Slide 18 text

Arquitetura não é organização de arquivos

Slide 19

Slide 19 text

Registro de hóspede

Slide 20

Slide 20 text

Registro de hóspede Programa

Slide 21

Slide 21 text

Registro de hóspede Programa Checa documentos Valida cartão de crédito Aplica regras extras

Slide 22

Slide 22 text

Registro de hóspede Programa Checa documentos Valida cartão de crédito Aplica regras extras Salva os dados

Slide 23

Slide 23 text

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)

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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)

Slide 26

Slide 26 text

Entrada Aplicação Domínio Infraestrutura X Camadas

Slide 27

Slide 27 text

Dependa de interfaces, não implementações Inversão de dependência

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Testes automatizados

Slide 30

Slide 30 text

Aplicação Domínio Infraestrutura Portas de entrada E2E Integration Unit

Slide 31

Slide 31 text

Mãos na massa!

Slide 32

Slide 32 text

X

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

● Buscar produções ● Criar usuários ● Adicionar à prateleira do usuário ● Remover da prateleira do usuário

Slide 35

Slide 35 text

No content