# Software Design Principles

{% content-ref url="software-design-principles/s.o.l.i.d.-priniciple" %}
[s.o.l.i.d.-priniciple](https://dailyjournal.gitbook.io/notes/software-development/software-design-principles/s.o.l.i.d.-priniciple)
{% endcontent-ref %}

## DRY Principle

* **D**on't **R**epeat **Y**ourself principle
* This principle states that each small pieces of knowledge (code) may only occur exactly once in the entire system. This helps us to write scalable, maintainable and reusable code.

## KISS Principle

* **K**eep **I**t **S**imple, **S**tupid! principle
* This principle states that try to keep each small piece of software simple and unnecessary complexity should be avoided. This helps us to write easy maintainable code.

## YAGNI Principle

* **Y**ou **A**in't **G**onna **N**eed **I**t principle
* This principle states that always implement things when you actually need them never implements things before you need them.

{% embed url="<https://principles.design/>" %}
