Надявам се, че мога да изясня с какво се боря :-) Ето го. Чудя се как да внедря SRP в следния случай:
Има проект. След като приключите, контактът трябва да бъде изпратен по пощата с анкета, в която той дава обратна връзка за това как е минал проектът.
Софтуерът има проект-клас. Има процедура, която преминава през всички проекти. Отделих целия код за изпращане до клас, наречен ContactMailer, който приема проекта като параметър, нещо като ContactMailer.AttemptMail(project);
Но има определени условия, при които имейл НЕ трябва да се изпраща: проектът е маркиран DoNotSurvey или означен като Challenged (= някой оспорва, че имейл не трябва да се изпраща и администраторът трябва да реши това), и ако няма валидно проучване за този вид проект.
Въпросът ми е: тази проверка може да е в процедура като CheckMailConditions или нещо подобно, но къде принадлежи тази процедура? Трябва ли да е в ContactMailer? Това се чувства някак неправилно, въпреки че Е проверка дали трябва да се изпрати имейл. Или трябва да е отделен клас? Това звучи като SRP (клас, който има една отговорност: проверка на условията), но това би довело до един клас с един метод, което изглежда прекалено.
Или трябва да проверя тези условия дори преди да извикам ContactMailer.AttemptMail, тъй като те са свойства на проекта? Загубен съм някак.
Благодаря предварително за вашите мисли!