object calisthenics

Post on 22-Apr-2015

1.019 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Object Calisthenics@krolow

● code is hard to understand, test and maintain

● OO will save us!● it's hard the transaction of paradigms

Procedural --- to --- OOP● Qualities matters:

○ cohesion○ loose coupling○ no redundancy○ encapsulation○ testability○ readability○ testability

WTF?

so what is it about?

It's an exercise, a practice to help you to write good oriented-object code!

The RULES

#1 One level of indentation per method#2 Don't use ELSE keyword#3 Wrap all primitives and String#4 First class collections#5 One dot per file#6 Don't abbreviate#7 Keep all entities small#8 No classes with more than two instances variable#9 No getters/setters/properties

#RULE1You shall not ident more than once!

#RULE2You shall not have "else"

#RULE3You shall encapsulate the primitives types

not totally applicable in PHP because of performance issues

but... we can do this with other types...

#RULE4Your collection shall not have other members variable

#RULE 5You shall use one dot per file, so you know each object has the responsible

not totally applicable in PHP...... but nested calls

● show some problems of encapsulationmake harder to debug...

● we can use... in chain of get and setters in chain of objects with a fluent interface

#RULE 6You must not abbreviate

why I should abbreviate?● because I use the name several times...● .... maybe your method is to heavily and you should remove

duplication● or because the names are too long...● ... maybe you are misplacing responsibilities or there is a missing

class...

Avoid also duplicate of words...

#RULE 7Keep your entity classes smaller!

50 rows by class10 classes by package...

maybe 100 rows by class and 15 by package it's also OK!

#RULE 8Class shall have less than 2 instance variables

Yep quite hard this... but let's try...

with this we can decomposition, we can separate the concerns...

maybe 5 variables it's also okay don't you think?

#RULE 9You shall not have getter and setters

WTF?

Yeah, PHP it's not possible apply that :|

BUT...

If we apply the #RULE 8 we may get this!

top related