# Принципы SOLID

Принципы объектно‑ориентированного программирования SOLID необходимы, при создании функционального, поддерживаемого длительное время ПО на основе объектно‑ориентированного программирования (ООП).

Основные принципы SOLID:

- Единственная ответственность (англ. Single responsibility principle или SRP) - каждый объект имеет только одну ответственность (цель), которая в свою очередь должна быть представлена отдельным классом. К примеру, извлечение данных из базы и последующая их валидация должны иметь разные классы для того, чтобы эти два процесса не смешивались друг с другом.
- Открытость / закрытость (англ. Open-closed principle или OCP) - классы должны быть открыты для изменения и дополнения новыми задачами и в то же время закрыты для изменения основного кода. Следовательно, в класс можно добавить другие модули и функции, но исходный код должен оставаться неизменным.
- Замена Лисков (англ. Liskov substitution principle или LSP) - все созданные потомки должны сохранять и демонстрировать поведение (выполняемые задачи) их родителя.
- Разделение интерфейса (англ. Interface segregation principle или LSP) - большие интерфейсы необходимо разделять на более мелкие и узконаправленные, чтобы не загружать пользователей лишней информацией.
- Инверсия зависимостей (англ. Dependency inversion principle или DIP) - объекты верхних уровней, например, классы, не должны зависеть от модулей нижних уровней, однако все они должны зависеть от абстракций.

## Смотрите также

- принцип `DRY`,
  который разделение ПО на мелкие компоненты
- принцип `KISS`,
  который предполагает отказ от усложнения ПО
- принцип `YAGNI`,
  который предполагает отказ от избыточной функциональности ПО
- принцип `CQS`,
  который задает для каждой функции только одну команду
- принцип `LoD`,
  который применяется при разработке ПО
- принцип разделения ответственности,
  который применяется при разработке ПО

← →
↑