# Design Principles Design Principles provide high-level guidelines or recommendations on how to design software to avoid common problems, make the software more maintainable, scalable, and understandable. They set the foundation for writing good software. %% - [ ] DRY (Don't Repeat Yourself) - [ ] YAGNI (You Aren't Gonna Need It) - [ ] Give code examples for each principle %% - [[Function and Class Naming]] - [[Directory Structure]] - [[S.O.L.I.D. Design Principles]] - [[Three Fundamental Principles of Object-Oriented Programming (OOP)]] - - [[Domain-Driven Design (DDD)]]