There is no such thing as perfect programming, but we shouldn’t be discouraged because programming is a constant pursuit of perfection.
- The Single responsibility principle is that each class has one responsibility
- The Open Closed principle: Open extensions, close modifications
- Interface oriented programming by Dependence invertion principle
- The Interface Segregation principle uses minimal interfaces
- Subclasses have all the functionality of their superclass, and subclasses can replace their superclass
- The Law of Demeter classes should have as few relationships as possible, communicating only with friends (member variables, parameters, return values) and not with strangers