Этот вопрос проверяет понимание базового принципа SOLID и умение проектировать классы с чёткой и ограниченной ответственностью.
Принцип Single Responsibility говорит о том, что у класса должна быть только одна причина для изменения. Это означает, что класс должен отвечать только за одну логическую задачу. Если класс выполняет несколько разных ролей, он становится сложнее в поддержке и тестировании. Изменения в одной части логики могут случайно повлиять на другую. Следование этому принципу делает код более понятным и устойчивым к изменениям.
Принцип Single Responsibility является первым принципом SOLID и задаёт фундамент для проектирования поддерживаемых систем.
Single Responsibility Principle (SRP) — это принцип, согласно которому у модуля, класса или структуры должна быть ровно одна причина для изменения.
Перед применением SRP важно понять, что речь идёт не о количестве методов, а о количестве обязанностей.
Класс может иметь много методов, но все они должны работать на одну цель.
Представим ViewController, который одновременно:
загружает данные из сети
парсит JSON
управляет UI
В этом случае у класса появляется несколько причин для изменения:
изменение API
изменение модели данных
изменение интерфейса
Логику лучше разделить:
NetworkService — отвечает за сеть
Parser — отвечает за преобразование данных
ViewController — отвечает только за отображение
class UserViewController: UIViewController {
let service: UserService
func loadUser() {
service.loadUser { /* обновление UI */ }
}
}
код проще читать
классы легче тестировать
изменения локализованы
уменьшается связность
SRP стоит применять всегда, когда класс начинает «разрастаться» и брать на себя несвязанные обязанности. Это особенно важно в iOS-приложениях, где UIViewController легко превращается в «god object».