polymorphism ruby

23
Replacing Conditionals With Polymorphism @gpespn

Upload: glenn-espinosa

Post on 12-Apr-2017

183 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Polymorphism ruby

Replacing Conditionals With

Polymorphism@gpespn

Page 2: Polymorphism ruby

“Any fool can write code that a computer can understand.

Good programmers write code that humans can understand.”

-- Martin Fowler

@gpespn

Page 3: Polymorphism ruby

@gpespn

But why? • Easier to read • Maintainability • Extensibility • Isolation of change • Easier to test

Page 4: Polymorphism ruby

@gpespn

B+

Page 5: Polymorphism ruby

@gpespn

C-

Page 6: Polymorphism ruby

@gpespn

New Feature! Guest sessions

Page 7: Polymorphism ruby

@gpespn

Page 8: Polymorphism ruby

@gpespn

F-

Page 9: Polymorphism ruby

@gpespn

I just want to send a message

to an object

Page 10: Polymorphism ruby

@gpespn

-Woof!

-Meow!

Page 11: Polymorphism ruby

@gpespn

Polymorphism

tell don't ask

Page 12: Polymorphism ruby

@gpespn

Page 13: Polymorphism ruby

@gpespn

Page 14: Polymorphism ruby

@gpespn

Page 15: Polymorphism ruby

@gpespn

still have conditional!

Page 16: Polymorphism ruby

@gpespn

Create a high level abstract

class

Page 17: Polymorphism ruby

@gpespn

Page 18: Polymorphism ruby

@gpespn

Abstract Subclass Subclass

Page 19: Polymorphism ruby

@gpespn

Polymorphism

Page 20: Polymorphism ruby

@gpespn

Page 21: Polymorphism ruby

@gpespn

Whats the catch? • Parallel interfaces • Design patterns that are confusing to those unfamiliar to them

• New words/vocabulary into application. LOC went up! • Increased big picture complexity in exchange for macro clarity

• Too many Objects

Page 22: Polymorphism ruby

@gpespn

Page 23: Polymorphism ruby

@gpespn

Questions?