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
so what is it about?Its an exercise, a practice to help you to writegood oriented-object code!
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
#RULE1You shall not ident more than once!
#RULE2You shall not have "else"
#RULE3 You shall encapsulate the primitives typesnot totally applicable in PHP because of performance issuesbut... we can do this with other types...
#RULE4Your collection shall not have other membersvariable
#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
#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...
#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!
#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?
#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!