Top Banner
Object Invariants, Immutability & You Making Objects Do Your Bidding AmsterdamPHP 15-01-2015
67

Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Jul 17, 2015

Download

Software

Jeroen Vd Gulik
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Object Invariants, Immutability & You

Making Objects Do Your Bidding AmsterdamPHP 15-01-2015

Page 2: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Jeroen v.d. Gulik

• CTO / Co-Founder Isset (http://isset.nl)

• Builder of Artificial Stupidity

• @n0x13

• Likes Cats … a lot

Page 3: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Isset Internet Professionals• We build custom internet technology based solutions

• We helped design and build several online video platforms (Pathé Thuis, Videoland, NPO Plus)

• Currently focussing on video-transcoder.com

• We like a challenge so if you have interesting problems to solve, come and talk to me

• Still Hiring

Page 4: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“Every Great Talk should start with a Great Quote”

- Ross Tuck-

Page 5: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

-House M.D.

Page 6: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Telephone Game

Page 7: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“Over time, the original intent and purpose

gets lost”- Jeroen v.d. Gulik

Page 8: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“A Customer should always have an email

address”

Page 9: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 10: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 11: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 12: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 13: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Testing shows the presence, not the absence

of bugs. - Joseph Stalin

Page 14: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 15: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 16: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“We should enforce (business) rules when

creating objects” - Mao Zedong

Page 17: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“A Customer should have a valid email address”

Page 18: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 19: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Outside-in validation should be avoided

- Albert Einstein

Page 20: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 21: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects should be responsible for their own

internal consistency - Barack Obama

Page 22: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 23: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

● Single Responsibility Principle

● Duplicate code

Page 24: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 25: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 26: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Design by contract

Page 27: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 28: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Value Object

● Small Objects

● Equality based on value

● Immutable

Page 29: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Entity Object

● Usually big(-ger)

● Equality based on Identity

● Mutable

● Can change over time

Page 30: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Immutability● Simplifies code

● Less cognitive load

● Guaranteed consistent

● Referencing without breakage

● Easy to test

● Caching (profit!)

Page 31: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Immutable Object, Best Object

- The Hulk

Page 32: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“A Customer should have a valid email address and a

password”

Page 33: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 34: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 35: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Make the Implicit, Explicit

Page 36: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 37: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 38: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 39: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects as dumb data stores

This is our industry standard

Page 40: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 41: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 42: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Published ?

Page 43: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects should have behaviour attached

to them- Julius Caesar

Page 44: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 45: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 46: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 47: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects should tell a tale about its current state and all the possible

ways to change that state- Bruce Lee

Page 48: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 49: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 50: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 51: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Schrödinger's cat

Page 52: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

UnpaidOrder PaidOrder

Page 53: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 54: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 55: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

“Sounds like a State Machine”- Igor Wiedler

Page 56: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Immutability

Page 57: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

UnpublishedArticle PublishedArticle

Page 58: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

UnpublishedArticle PublishedArticleDraft Article

Page 59: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 60: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Draft Article RetractedArticle

Page 61: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 62: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects should only expose methods relevant to it's

current state - George Bush

Page 63: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 64: Object invariants, immutability & you full talk (v1) - AmsterdamPHP
Page 65: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Objects should …

• Be responsible for their own internal state

• Have specific behaviour towards its responsibility

• Broadcast their state

• Only care about the state it’s currently in.

Page 66: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Magic is bad, hmmmkay- Saddam Hussein

Page 67: Object invariants, immutability & you full talk (v1) - AmsterdamPHP

Questions?Please rate my talk: https://joind.in/event/view/

3267