Я получаю возражения по поводу дизайна от коллеги, и мне интересно, есть ли консенсус относительно того, кто прав в применении SRP в этом случае.
Я считаю, что SRP в основном относится к деталям нижнего уровня дизайна, таким как классовая ответственность. По мере того, как вы продвигаетесь вверх по уровням абстракции, я считаю, что SRP по-прежнему актуален, но определение того, что представляет собой отдельная ответственность, обязательно также перемещается на более высокий уровень абстракции.
В моем конкретном случае служба, которая «обрабатывает foos, сохраняет их результаты и предоставляет доступ к этим результатам», на мой взгляд, несет единственную ответственность за «подсистему обработки foo», однако коллега не согласен и рассматривает это как 2–3 отдельных обязанности. Я считаю, что если вы всегда разбиваете отдельные обязанности до мельчайших деталей, то наличие «банка» является нарушением SRP, поскольку он «держит деньги, ведет счета, продает ипотечные кредиты ...».