In this latest post to the QaFoo blog Tobias Schlitt recommends learning proper object-oriented design first before trying to worry about the interactions between the objects.
One topic we regularly teach in workshops for our customers is object oriented design (ODD), i.e. the art of crafting classes/interfaces in a way that the result is an easy-to-understand, maintainable and flexible code base. With the agile focus on shipping working software, some might consider the skill of OOD less important. One popular argument is that quick reaction to change is more important than designing objects and their interaction carefully. I personally look at it the exact other way around. This blog post summarizes why you need to learn OOD first, in order to avoid it to some degree again.
He's broken up the rest of the post into a few different topics reinforcing this idea:
- Learning OOD the classical way
- OOD in fast pace and agile
- Refactoring is the key
- Learning OOD to unlearn it
Finally, he makes the recommendation that all developers should learn about effective refactoring and automated testing to help create well-structured OOP applications.