Проверяет знание пяти фундаментальных принципов объектно-ориентированного проектирования.
SOLID — это аббревиатура из пяти принципов:
S: Single Responsibility
O: Open/Closed
L: Liskov Substitution
I: Interface Segregation
D: Dependency Inversion
Single Responsibility Principle (SRP)
Класс должен иметь только одну причину для изменения, т.е. выполнять одну функцию.
// Плохо
class Report { func print() {} func save() {} }
// Хорошо
class ReportPrinter {}
class ReportSaver {}Open/Closed Principle (OCP)
Классы должны быть открыты для расширения, но закрыты для модификации.
Используются абстракции и протоколы.
Liskov Substitution Principle (LSP)
Подкласс должен заменять родительский класс без нарушения логики.
(Если Bird умеет летать, то Penguin: Bird — нарушает LSP)
Interface Segregation Principle (ISP)
Интерфейсы (протоколы) не должны быть жирными — лучше несколько маленьких, чем один большой.
Dependency Inversion Principle (DIP)
Зависимость должна быть от абстракций, а не от конкретных классов. Используйте инъекцию зависимостей.