Back to questions
Junior — Middle
67
Как проверить, что класс или модуль отвечает принципу единственной ответственности?
Answer from AI
sobes.tech AI
Принцип единственной ответственности (Single Responsibility Principle, SRP) говорит, что класс или модуль должен иметь только одну причину для изменения, то есть отвечать за одну конкретную задачу или функциональность.
Чтобы проверить, что класс или модуль соответствует этому принципу, можно:
- Посмотреть на количество и тип методов: если класс выполняет слишком много разных функций (например, и работу с базой данных, и логику UI, и сетевые запросы), это признак нарушения SRP.
- Проверить, можно ли выделить части класса в отдельные модули без потери смысла.
- Оценить, изменяется ли класс по разным причинам. Если изменения происходят из-за разных аспектов (например, изменение бизнес-логики и изменение способа хранения данных), значит класс несёт несколько ответственностей.
Пример:
// Нарушение SRP
class UserManager {
fun saveUserToDb(user: User) { /* сохранение в БД */ }
fun validateUser(user: User) { /* валидация */ }
fun sendWelcomeEmail(user: User) { /* отправка email */ }
}
// Правильный подход
class UserValidator {
fun validate(user: User) { /* валидация */ }
}
class UserRepository {
fun save(user: User) { /* сохранение в БД */ }
}
class EmailSender {
fun sendWelcome(user: User) { /* отправка email */ }
}
Такой подход упрощает поддержку и тестирование кода.