Principles


 * Aspect-oriented programming
 * Separation of concerns
 * SOLID principles
 * Clean Code