Откуда идея, что объект должен делать только одну вещь? - PullRequest
7 голосов
/ 09 ноября 2009

Я не уверен, что согласен с этим, поэтому я хотел бы найти книгу или журнальную статью, стоящую за этой идеей, чтобы я мог убедиться, что я точно понимаю, что они говорят, и в каком контексте они это имеют в виду.

Мне кажется, я понимаю идею - я просто хочу знать источник, чтобы я мог проверить, откуда пришла идея.

почему я спрашиваю:

Термин «делать одну вещь» является расплывчатым и может означать много вещей, в том числе «иметь только один метод на класс» (смешно) ... Я думаю, что это может означать одну ответственность (то есть множество методов). Это также не особенно полезно, потому что вы должны судить, когда отдельная ответственность становится достаточно сложной, чтобы потребовать рефакторинга на несколько обязанностей с какой-то делегацией ...

Ответы [ 5 ]

21 голосов
/ 09 ноября 2009

твердые принципы от Боб Мартин .

Принцип единой ответственности , если быть точным.

Хотя на первой странице главы, посвященной принципу единой ответственности, он заявляет:

Этот принцип был описан в работах Тома Демарко и Мейлира Пейдж-Джонса. Oни назвал это сплоченность.

Ссылки на упомянутую работу:

  • Структурный анализ и спецификация системы , Том ДеМарко, Серия Yourdon Press Computing, 1979
  • Практическое руководство по проектированию структурированных систем , 2d. ред., Мейлир Пейдж Джонс, серия изданий Yourdon Press Computing, 1988

Другие источники (от S.Lott в комментариях) включают:

6 голосов
/ 10 ноября 2009

Человеком, который изобрел идею модульности в программном обеспечении, был доктор Дэвид Парнас. Классическая статья - О критериях, используемых для разложения систем на модули

Хотя он не говорит об ОО в целом (поскольку его еще не было), идеи ОО естественно вытекают из работы доктора Парнаса. И частью этой работы является анализ того, как разбить ваше программное обеспечение на модули, и эти модули должны быть единого назначения.

1 голос
/ 09 ноября 2009

Какой бы ни был источник, я не думаю, что это обычная идея в ОО. Объект может делать много вещей.

1 голос
/ 09 ноября 2009

Принцип единоличной ответственности - проверьте здесь для получения некоторой информации по этому вопросу.

0 голосов
/ 26 июня 2010

Принцип единой ответственности (SRP) довольно распространен в мире Java. Упомянутые здесь ссылки хороши.

Принцип может в значительной степени применяться как к классам, так и к методам, потому что это хорошая идея для обоих.

Результаты знания SRP и применения его, когда это возможно, обычно являются более простым, но за счет большего количества классов / методов. Это может иметь большое значение для повторного использования, тестирования и следующего программиста, который его увидит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...