Slide 1

Slide 1 text

DDD

Slide 2

Slide 2 text

@malukenho

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

DDD É PRA MIM?

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Quantos livros é preciso ler para entender um livro?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

FILOSOFIA

Slide 9

Slide 9 text

Tackling Complexity

Slide 10

Slide 10 text

Heart of Software

Slide 11

Slide 11 text

Core Domain

Slide 12

Slide 12 text

Auth Core Domain

Slide 13

Slide 13 text

Domain

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Modelo

Slide 16

Slide 16 text

Domain Model

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Você tem que estar mortalmente interessado, no problema que está envolvido.

Slide 19

Slide 19 text

“Yo soy yo y mi circunstancia.” Ortega y Gasset

Slide 20

Slide 20 text

Problemas de comunicação

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Ubiquitous Language

Slide 23

Slide 23 text

Literate Programming

Slide 24

Slide 24 text

When Given Then

Slide 25

Slide 25 text

Scenario: Buying a single product under £10 Given there is a "Sith Lord Lightsaber", which costs £5 When I add the "Sith Lord Lightsaber" to the basket Then I should have 1 product in the basket And the overall basket price should be £9

Slide 26

Slide 26 text

STATUS QUAESTIONIS

Slide 27

Slide 27 text

Ninguém pode dar o que não tem.

Slide 28

Slide 28 text

BBoM

Slide 29

Slide 29 text

is_array($object); 22,748,480

Slide 30

Slide 30 text

Event Storming

Slide 31

Slide 31 text

VALUE OBJECT

Slide 32

Slide 32 text

ATOMIC STEP

Slide 33

Slide 33 text

SELF VALIDATED

Slide 34

Slide 34 text

email = $email;
 }
 
 public static function fromString(string $email) : self
 {
 return new self($email);
 }
 }

Slide 35

Slide 35 text

new User('malukenho', 5);

Slide 36

Slide 36 text

NAMED CONSTRUCTOR

Slide 37

Slide 37 text

User::fromNameAndFingersByHand( 'malukenho', 5 );

Slide 38

Slide 38 text

username = $username;
 }
 
 public static function fromString(string $username) : self
 {
 return new self($username);
 } public static function fromUser(User $user) : self
 {
 return new self($user->getUsername());
 }
 }

Slide 39

Slide 39 text

ANEMIC DOMAIN

Slide 40

Slide 40 text

IMMUTABLE

Slide 41

Slide 41 text

Potentially mutable operation

Slide 42

Slide 42 text

Money Pattern

Slide 43

Slide 43 text

amount = $amount; $this->currency = $currency; } }

Slide 44

Slide 44 text

amount() + $amount, $this->currency() ); } }

Slide 45

Slide 45 text

Entidades

Slide 46

Slide 46 text

*Identidade

Slide 47

Slide 47 text

UUID

Slide 48

Slide 48 text


 Uuid::uuid4(); // 7b733ff1-42d2-4638-b7bd-411997c32b11 Value Object

Slide 49

Slide 49 text

EVITAR INVALID STATE DA ENTIDADE

Slide 50

Slide 50 text

INDEPENDE DE STORAGE

Slide 51

Slide 51 text

#TIPS

Slide 52

Slide 52 text

PERSISTÊNCIA ORM

Slide 53

Slide 53 text

NÃO USE ANNOTATIONS

Slide 54

Slide 54 text

Delivery Mechanism

Slide 55

Slide 55 text

DDD É PRA MIM?

Slide 56

Slide 56 text

Sylius

Slide 57

Slide 57 text

PERGUNTAS?

Slide 58

Slide 58 text

THANKS! @malukenho