Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
How do I design objects using tests @cocoders
Slide 2
Slide 2 text
@cocoders Who I am? Developer, Former medieval reactor, Beer lover and founder of Cocoders
Slide 3
Slide 3 text
Let's imagine legacy app: http://git.io/vLPVa @cocoders
Slide 4
Slide 4 text
Task: Allow company to view incoming and outgoing invoices using system @cocoders
Slide 5
Slide 5 text
The first attempt: http://git.io/vLPre @cocoders Design Invoice object
Slide 6
Slide 6 text
Second attempt (encapsulation): http://git.io/vLPoh @cocoders Design Invoice object
Slide 7
Slide 7 text
Another attempt (ValueObjects): http://git.io/vLPKZ @cocoders Design Invoice object
Slide 8
Slide 8 text
InvoiceRegistry model concept: http://git.io/vLPPq @cocoders Design Model
Slide 9
Slide 9 text
Use important concept in legacy: http://git.io/vLPXc @cocoders Design Model
Slide 10
Slide 10 text
Protect object invariants: http://git.io/vLPXw @cocoders Design Model
Slide 11
Slide 11 text
Implementation of model concept in separate mysql adapter: http://git.io/vLP1D @cocoders Design Model
Slide 12
Slide 12 text
Application layer rely on abstraction: http://git.io/vLPM7 @cocoders Design Application
Slide 13
Slide 13 text
Usage of application object in legacy app: http://git.io/vLPDE @cocoders Design Application
Slide 14
Slide 14 text
Next step: http://git.io/vLPys @cocoders Design Application
Slide 15
Slide 15 text
That's all... for now Thank you @cocoders
Slide 16
Slide 16 text
Questions? @cocoders