7. Что такое SOLID?

7. Что такое SOLID?.md

1. Определение

SOLID - это 5 принципов проектирования, которые помогают писать код, устойчивый к изменениям: его проще расширять, тестировать, поддерживать.

S - Single Responsibility Principle (принцип единственной ответственности)
Каждый класс должен отвечать только за одну задачу.

Если класс выполняет сразу несколько функций- он становится хрупким. Любое изменение в одной части может сломать другую.

O - Open/Closed Principle (Принцип открытости/закрытости)

Открыт для расширения:
Поведение кода можно изменить, добавив новые типы или функционал через наследование, интерфейсы или полиморфизм.

Закрыт для изменения:
Исходный код модуля не должен меняться при добавлении новых функций, что важно для продакшена.

L - Liskov Substitution Principle (принцип подстановки Лисков)

Любой дочерний класс должен корректно заменять родительский без изменения поведения программы.

Если подставить наследника вместо базового класса - всё должно работать так же.

I - Interface Segregation Principle (разделение интерфейсов)

Лучше много маленьких интерфейсов, чем один большой.

Класс не должен зависеть от методов, которые он не использует.

Вместо единого интерфейса IMachine с методами Print(), Scan(), Fax(), лучше создать IPrinter, IScanner и IFax

D - Dependency Inversion Principle (инверсия зависимостей)

Высокоуровневые модули не должны быть зависимы от низкоуровневых. Оба должны зависеть от абстракций.

Использование интерфейсов позволяет менять низкоуровневые компоненты без изменений высокоуровневых.

  1. Зачем и когда используется:

SOLID становится критически важным, когда проект растёт:
- появляются новые фичи каждую неделю
- над кодом работает несколько разработчиков
- нужно писать тесты
- появляются разные источники данных (БД, API, кэш)

4. Закрепление (простое объяснение)

S — не делай один класс «всем сразу»
O — добавляй новое, не ломая старое
L — наследники должны вести себя нормально
I — не заставляй делать лишнее
D — не привязывайся к конкретным вещам