I am a huge fan of software design principles such as SOLID and DRY. What other principles exist for OO software design?
Note. I’m not looking for answers like "comment your code" but instead looking for OO design principles like the ones discussed by Uncle Bob.
The GRASP patterns. Yes, they seem rather trivial. More like distillation down to core qualities that other, more involved patterns demonstrate.
High Cohesion - How focused are the responsibilities of the modules you are designing.
Low Coupling - The degree to which modules rely on other modules.