Я возвращаюсь к дизайну от коллеги, и мне интересно, существует ли консенсус относительно того, кто прав в отношении применения SRP в этом случае.На каком уровне абстракции принцип Single Responsibility (SRP) больше не имеет смысла?
Я вижу SRP как относящийся главным образом к деталям конструкции нижнего уровня, такие как ответственность за класс. По мере того как вы продвигаетесь вверх по уровням абстракции, я считаю, что SRP по-прежнему актуальна, но определение того, что одна ответственность обязательно также движется к более высокому уровню абстракции.
В моем конкретном случае служба, которая «обрабатывает foos, сохраняет свои результаты и обеспечивает доступ к этим результатам», в моей голове несет единственную ответственность «подсистемы обработки foo», однако коллега не согласен и видит это как 2-3 отдельные обязанности. Мое дело в том, что если вы всегда разбиваете отдельные обязанности на мелкие детали, то наличие «банка» является нарушением СРП, поскольку оно «держит деньги, ведет счета, продает ипотечные кредиты ...».
См. Этот вопрос, и это ответ: http://stackoverflow.com/questions/2455705/how-do-you-determine-how-coarse-or-fine-grained-a-responsibility-should-be-when – User