SOLID — пять принципов объектно-ориентированного дизайна, сформулированных Робертом Мартином. Вместе они описывают, как писать код, который легко читать, тестировать и изменять.
Пять принципов
S — Single Responsibility — класс должен иметь только одну причину для изменения. UserService не должен одновременно отправлять email и сохранять в БД
O — Open/Closed — открыт для расширения, закрыт для модификации. Добавляйте новое поведение через новые классы, не изменяя старые
L — Liskov Substitution — дочерний класс должен быть заменителем родительского без изменения поведения программы
I — Interface Segregation — лучше несколько узких интерфейсов, чем один широкий. Клиент не должен зависеть от методов, которые не использует
D — Dependency Inversion — зависите от абстракций, а не от конкретных реализаций