Я надеюсь, что смогу прояснить, с чем я борюсь :-) Вот. Мне интересно, как реализовать SRP в следующем случае:
Есть проект. По завершении контакт должен быть отправлен по почте с опросом, в котором он дает отзыв о том, как прошел проект.
Программное обеспечение имеет проектный класс. Есть процедура, которая перебирает все проекты. Я выделил весь код для рассылки в класс ContactMailer, который принимает проект в качестве параметра, что-то вроде ContactMailer.AttemptMail(project);
Но есть определенные условия, при которых письмо НЕ должно быть отправлено: проект помечен как DoNotSurvey или как Challenged (= кто-то оспаривает, что письмо не должно быть отправлено, и решение об этом должен принять админ), и если нет действительный опрос для такого рода проекта.
Мой вопрос: эта проверка может быть в процедуре типа CheckMailConditions или что-то в этом роде, но где эта процедура? Должно ли это быть в де ContactMailer? Это кажется несколько странным, хотя это и есть проверка, следует ли отправлять почту. Или это должен быть отдельный класс? Это похоже на SRP (класс, у которого есть одна обязанность: проверка условий), но это привело бы к одному классу с одним методом, что кажется излишним.
Или я должен проверить эти условия еще до вызова ContactMailer.AttemptMail, так как они являются свойствами проекта? Я немного потерян.
Заранее спасибо за ваши мысли!