Ответ
Автор: Роберт Мартин (Robert C. Martin) Год: 2000 Документ: Статья "Design Principles and Design Patterns" Популяризация: Майкл Фэзерс (Michael Feathers) ввёл акроним SOLID
Расшифровка принципов:
- Single Responsibility — единственная ответственность
- Open-Closed — открытость/закрытость
- Liskov Substitution — подстановка Лисков
- Interface Segregation — разделение интерфейсов
- Dependency Inversion — инверсия зависимостей
Пример нарушения и соблюдения SRP в Swift:
// ❌ Нарушение: класс управляет и данными, и уведомлениями
class UserManager {
func saveUser(_ user: User) { /* Сохранение в БД */ }
func sendWelcomeEmail(to user: User) { /* Отправка email */ }
}
// ✅ Соблюдение: разделение ответственности
class UserRepository {
func save(_ user: User) { /* Только сохранение */ }
}
class EmailService {
func sendWelcome(to user: User) { /* Только отправка */ }
}
Практическая польза: SOLID повышает поддерживаемость, тестируемость и гибкость кода.