
Recently I was reading books about Object Oriented design and analysis to refresh my designing skills. While doing that I came across few interesting design principles, I hope these will be helpful to new developers/designers
- Identify the aspects of your application that vary and separate them from whats stays the same.
- Program to an Interface, not an implementation.
- Favor composition over inheritance.
- Strive for loosely coupled designs between objects that interact.
- Classes should be open for extension, but closed for modification.
- Depend on abstractions. Do not depend on concrete class.
- Talk only to your Immediate friends - Principle of least knowledge.