Don't worry about design, if you listen to your code a good design will appear.
Martin Folwer, Is Design Dead?
Do the simplest thing that could possibly work.
-
single responsibility principle
- a class should have only one reason to change
-
open/closed principle
- software entities (classes, modules, functions, etc.)
- should be open for extensions but closed for modification
-
liskow substition principle
- subtypes must be substitutable for their base types
-
dependency-inversion principle
- high-level modules should not depend on low-level modules, both should depend on abstraction
- abstractions should not depend upon details, details should depend upon abstractions
-
interface-segregation principle
keep it simple, stupid
don't repeat yourself
you ain't gonna need it