richard miller
@mr_r_miller
richardmiller.co.uk
sensiolabs uk
Slide 3
Slide 3 text
http://www.flickr.com/photos/brostad/8583990904
Slide 4
Slide 4 text
what makes
an application
fragile?
Slide 5
Slide 5 text
single
responsibility
principle
Slide 6
Slide 6 text
a class or module
should have one, and
only one, reason to
change
Slide 7
Slide 7 text
dependency
inversion
principle
Slide 8
Slide 8 text
High-level
modules should
not depend on
low-level modules
Slide 9
Slide 9 text
Both should depend
on abstractions.
Slide 10
Slide 10 text
should
everything go
in a bundle?
Slide 11
Slide 11 text
no
Slide 12
Slide 12 text
no
(imo)
Slide 13
Slide 13 text
HumanResourcesBundle
Slide 14
Slide 14 text
HumanResourcesBundle HumanResources
responsible for
framework
related code
responsible for
domain
related code
Slide 15
Slide 15 text
HumanResourcesBundle HumanResources
Slide 16
Slide 16 text
better?
Slide 17
Slide 17 text
still tightly
coupled
Slide 18
Slide 18 text
AbsenceEntity
Request
Absence
Form
Cancel
Absence
Form
Approve
Absence
Form
Change
Absence
Type
Form
Slide 19
Slide 19 text
entities
coupled to
forms
Slide 20
Slide 20 text
complex
validation
Slide 21
Slide 21 text
form events
Slide 22
Slide 22 text
entity is
responsible for
validating user
input
Slide 23
Slide 23 text
AbsenceEntity
Request
Absence
Form
Cancel
Absence
Form
Approve
Absence
Form
Change
Absence
Type
Form
Request
Absence
Command
Cancel
Absence
Command
Approve
Absence
Command
Change
Absence
Type
Command