Ответ
Принцип единственной ответственности (Single Responsibility Principle, SRP) — это один из пяти принципов SOLID, который гласит, что каждый класс должен иметь только одну причину для изменения.
Это означает, что класс должен быть ответственен только за одну, четко определенную часть функциональности. Следование этому принципу делает код более модульным, понятным, легко тестируемым и менее хрупким при внесении изменений.
Нарушение принципа
Класс User отвечает и за хранение данных, и за их сохранение в базу данных. Причины для изменения: изменилась структура пользователя или способ сохранения.
# Плохая практика: класс имеет несколько ответственностей
class User:
def __init__(self, name: str, email: str):
self.name = name
self.email = email
def save_to_db(self):
# Логика сохранения пользователя в базу данных
print(f"Saving {self.name} to DB")
Соблюдение принципа
Ответственность разделена: User хранит данные, а UserRepository управляет их сохранением.
# Хорошая практика: каждая сущность отвечает за свое
class User:
def __init__(self, name: str, email: str):
self.name = name
self.email = email
class UserRepository:
def save(self, user: User):
# Логика сохранения пользователя в базу данных
print(f"Saving {user.name} to DB")
Теперь, если изменится способ сохранения, правки нужно будет вносить только в UserRepository, не затрагивая класс User.