I\'m trying to understand object orientation. I understand it a little bit of course, but sometimes I\'m not 100% clear. How do you decide what should be turned into an object (
In general, if you need more information from it than just only one thing (not only the knob's state, but also its color, its exact location, whether it has a key groove, the ability to change its state/behaviour, etc), then make it object. Thus, when you can't store all the information the door needs to know about the knob in a simple String
, Number
or Boolean
, then make it an fullworthy Knob
.
As everywhere you also have "corner cases". I see this often with pairs. Two propeties which are related to each other, but usually to nothing else. They aren't always grouped in a separate real world object. For example sortDirection
and sortField
. Whether they belongs in their own object depends on what the parent object represents. Is it a sortable implementation of List
? Okay, keep it there. Is it a Door
? Well, I would maybe externalize it.