Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Object Calisthenics


Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Object Calisthenics

  1. 1. Object Calisthenics @krolow
  2. 2. WTF?● code is hard to understand, test and maintain● OO will save us!● its hard the transaction of paradigms Procedural --- to --- OOP● Qualities matters: ○ cohesion ○ loose coupling ○ no redundancy ○ encapsulation ○ testability ○ readability
  3. 3. so what is it about?Its an exercise, a practice to help you to writegood oriented-object code!
  4. 4. The RULES#1 One level of indentation per method#2 Dont use ELSE keyword#3 Wrap all primitives and String#4 First class collections#5 One dot per file#6 Dont abbreviate#7 Keep all entities small#8 No classes with more than two instancesvariable#9 No getters/setters/properties
  5. 5. #RULE1You shall not ident more than once!
  6. 6. #RULE2You shall not have "else"
  7. 7. #RULE3 You shall encapsulate the primitives typesnot totally applicable in PHP because of performance issuesbut... we can do this with other types...
  8. 8. #RULE4Your collection shall not have other membersvariable
  9. 9. #RULE 5 You shall use one dot per file, so you know each object has the responsiblenot 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
  10. 10. #RULE 6 You must not abbreviatewhy 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...
  11. 11. #RULE 7 Keep your entity classes smaller!50 rows by class10 classes by package...maybe 100 rows by class and 15 by package its also OK!
  12. 12. #RULE 8 Class shall have less than 2 instance variablesYep quite hard this... but lets try...with this we can decomposition, we can separate the concerns...maybe 5 variables its also okay dont you think?
  13. 13. #RULE 9 You shall not have getter and settersWTF?Yeah, PHP its not possible apply that :|BUT...If we apply the #RULE 8 we may get this!