Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Object Calisthenics

Object Calisthenics

Slides used for HackThursday, where I showed how apply Object Calisthenics in the daily tasks of programmer, to get a better written of code using OO

Vinícius Krolow

June 21, 2012
Tweet

More Decks by Vinícius Krolow

Other Decks in Programming

Transcript

  1. • 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 WTF?
  2. so what is it about? It's an exercise, a practice

    to help you to write good oriented-object code!
  3. 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
  4. #RULE3 You shall encapsulate the primitives types not totally applicable

    in PHP because of performance issues but... we can do this with other types...
  5. #RULE 5 You 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 encapsulation make harder to debug ... • we can use... in chain of get and setters in chain of objects with a fluent interface
  6. #RULE 6 You 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...
  7. #RULE 7 Keep your entity classes smaller! 50 rows by

    class 10 classes by package... maybe 100 rows by class and 15 by package it's also OK!
  8. #RULE 8 Class 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?
  9. #RULE 9 You 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!