Ответ
SOLID — это принципы объектно-ориентированного проектирования:
- Single Responsibility (единственная ответственность) — класс должен решать только одну задачу.
- Open/Closed (открытость/закрытость) — классы должны быть открыты для расширения, но закрыты для изменений.
- Liskov Substitution (подстановка Лисков) — наследники должны заменять родительские классы без нарушения логики.
- Interface Segregation (разделение интерфейсов) — лучше много узкоспециализированных интерфейсов, чем один универсальный.
- Dependency Inversion (инверсия зависимостей) — зависимости должны строиться на абстракциях, а не на конкретных реализациях.
Пример для S (Kotlin):
// Плохо: класс и логирует, и сохраняет данные
class UserManager {
fun save(user: User) { /*...*/ }
fun log(message: String) { /*...*/ }
}
// Хорошо: разделение ответственностей
class UserRepository { fun save(user: User) }
class Logger { fun log(message: String) }