refactoring for domain driven design

36
R e f a c t o r i ng t o w a rds D o m a i n D r i ve n D e s i gn DAV I D B E R L I N E R

Upload: david-berliner

Post on 22-Nov-2014

1.757 views

Category:

Design


3 download

DESCRIPTION

This talk goes from refactoring into some of the basics about Domain Driven Design.

TRANSCRIPT

Page 1: Refactoring for Domain Driven Design

Refactoring towardsDomain Driven Design

DAV ID BERL INER

Page 2: Refactoring for Domain Driven Design

The sources of all knowledge:

Page 3: Refactoring for Domain Driven Design

Who am I ?Developer at BetTech.I've been coding for a decade.@manatok

Page 4: Refactoring for Domain Driven Design

“…is a disciplined technique for restructuring an existing body of code,

altering its internal structure without changing its external behavior.…”

Martin Fowler

Page 5: Refactoring for Domain Driven Design
Page 6: Refactoring for Domain Driven Design
Page 7: Refactoring for Domain Driven Design

+ Adding features

+ Shortcuts and hacks

+ Team growth

= increased complexity

Page 8: Refactoring for Domain Driven Design

No thanks!We're

too busy.

Page 9: Refactoring for Domain Driven Design

TIME

CU

MU

LATI

VE F

UN

CTI

ON

ALIT

Y

NO DESIGN

GOOD DESIGN

DESIGN PAY-OFF LINE

Page 10: Refactoring for Domain Driven Design

So...how do we do it?

Page 11: Refactoring for Domain Driven Design
Page 12: Refactoring for Domain Driven Design
Page 13: Refactoring for Domain Driven Design

Refactoring requires prioritisation

Page 14: Refactoring for Domain Driven Design

Boyscout refactoring

Page 15: Refactoring for Domain Driven Design

What is considered “code litter”?

Page 16: Refactoring for Domain Driven Design
Page 17: Refactoring for Domain Driven Design
Page 18: Refactoring for Domain Driven Design

DomainDriven

Design

Page 19: Refactoring for Domain Driven Design

Ubiquitous language

Bounded context

Page 20: Refactoring for Domain Driven Design
Page 21: Refactoring for Domain Driven Design
Page 22: Refactoring for Domain Driven Design
Page 23: Refactoring for Domain Driven Design
Page 24: Refactoring for Domain Driven Design
Page 25: Refactoring for Domain Driven Design
Page 26: Refactoring for Domain Driven Design
Page 27: Refactoring for Domain Driven Design
Page 28: Refactoring for Domain Driven Design

Ubiquitous

Language

Define

model

with

Identify

model

with

Process

model

with

Express

model

with

MODEL DRIVEN DESIGN

Express

model

with

Isolate

domain

with

Express

state change

with

Bounded

ContextsServices Entities

Value

Objects

Layered

ArchitectureEvents

Page 29: Refactoring for Domain Driven Design
Page 30: Refactoring for Domain Driven Design
Page 31: Refactoring for Domain Driven Design

AN

TI-

CO

RR

UP

TIO

N L

AY

ER

Page 32: Refactoring for Domain Driven Design

AN

TI-

CO

RR

UP

TIO

N L

AY

ER

Page 33: Refactoring for Domain Driven Design

final thoughts

Page 34: Refactoring for Domain Driven Design

+ You don’t have to drink ALL the kool-aid to benefit

+ See the good side of a messy system

+ Be consistent

Page 35: Refactoring for Domain Driven Design

Thankyou

Page 36: Refactoring for Domain Driven Design