Вроде простой вопрос, но не так он прост как кажется. Если ударяться в крайности, с одной стороны у нас будут анемичные модели, где сущность не содержит какой-либо логики, а с другой - модели, которые делают слишком много всего, что с ними напрямую не связано. Как выбрать в конкретном случае, стоит ли оставить метод в сущности или вынести в отдельный класс?
Я для себя вывел несколько критериев оставления метода в сущности. Они, конечно, не покрывают всех случаев, но помогают принять решение.
- Метод работает с экземпляром сущности.
- Метод работает или только с самой сущностью или с небольшим количеством внешних данных, передаваемых через аргументы.
- Метод применим ко всем контекстам, в которых используется сущность.
- Метод описывает поведение самой сущности, а не технические детали, такие, например, как сохранение или загрузка из базы.