This is an interview question. Suppose you are given a design review , what are the things that you will look for ?
Some things that I can think of
Single responsibility principleOpen-closed principle - make it easy to add new things without modifying existing codeProgram to interfaces - Loose coupling and high cohesion Favour compostion over inheritance when the relationship is not a "IS-A" kindDesign patternsInversion of control
Let me know what you think ?