Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Расскажите про принципы SOLID: SRP, OCP, LSP, ISP, DIP и примеры их применения на практике.
SOLID объединяет пять принципов:
SRP (Single Responsibility) — класс отвечает за одну задачу (например, разделить логику валидации от сохранения).
OCP (Open/Closed) — расширять поведение через наследование или композицию без изменения существующего кода (добавить новый тип обработки, не правя базовый класс).
LSP (Liskov Substitution) — подкласс должен заменять базовый без нарушений (метод Rectangle.SetWidthHeight не должен ломать Square).
ISP (Interface Segregation) — маленькие интерфейсы, клиенты не должны зависеть от ненужных методов (IReadable, IWritable вместо IReadWrite).
DIP (Dependency Inversion) — зависеть от абстракций, а не от конкретных реализаций (внедрять ILogger, а не FileLogger).
Метрики нарушения SRP — количество методов в классе, разные уровни абстракции, множество актёров-пользователей класса.
Основные метрики нарушения SRP включают количество методов (более 7-10 указывает на проблему), разные уровни абстракции в одном классе (работа с БД и форматирование вывода), множество "актёров" — разных пользователей класса, которые требуют изменений по разным причинам. Также важны частые изменения класса и высокая связность с разными модулями системы.
Почему Singleton считается нарушающим SRP?
Singleton часто нарушает принцип Single Responsibility, потому что он совмещает сразу несколько ролей. Он отвечает не только за бизнес-логику, но и за контроль своего жизненного цикла и глобальный доступ. В итоге класс начинает решать больше одной задачи. Это усложняет тестирование и поддержку. Из-за этого Singleton часто становится источником скрытой связности.
Рейтинг:
2
Сложность:
5
Рейтинг:
3
Сложность:
4
Рейтинг:
5
Сложность:
6