A good design thrives for low coupling . The lowest form of coupling is set of disconnected objects, which couldn't form a system. (Since, objects don't interact with each other.) The highest form of coupling is Inheritance, which is one of the pillars of OOPS. The answer for this irony can be "everything is a trade-off in software development". Principles are only guidelines and not rules. An Anology: "Drive Slowly" is a common driving safety guideline. At the slowest speed (0 km/hr), the vehicle doesn't move. Also, people generally wants to buy a vehicle which gives maximum power and speed. Its a guideline to be applied pragmatically. P.S: My another post which shows the legal violation of Command Query Separation Principle .