Jump to content

Принцип единой ответственности

Принцип единой ответственности ( SRP ) — это принцип компьютерного программирования, который гласит, что «Модуль должен нести ответственность перед одним и только одним субъектом». [1] Термин «субъект» относится к группе (состоящей из одного или нескольких заинтересованных сторон или пользователей), которой требуется изменение в модуле.

Роберт К. Мартин , создатель этого термина, выражает этот принцип следующим образом: «У класса должна быть только одна причина для изменений». [2] Из-за путаницы вокруг слова «причина» он позже разъяснил его значение в сообщении в блоге под названием «Принцип единой ответственности», в котором он упомянул разделение ответственности и заявил, что «Другая формулировка принципа единой ответственности такова: Соберите вместе вещи, которые меняются по одним и тем же причинам. Разделите те вещи, которые меняются по разным причинам.». [3] В некоторых своих выступлениях он также утверждает, что принцип касается, в частности, ролей или актеров. Например, хотя это может быть один и тот же человек, роль бухгалтера отличается от роли администратора базы данных. Следовательно, каждый модуль должен отвечать за каждую роль. [4]

Этот термин был введен Робертом К. Мартином в его статье «Принципы ООД» как часть его «Принципов объектно-ориентированного проектирования » . [5] стал популярным благодаря его книге 2003 года « Гибкая разработка программного обеспечения, принципы, шаблоны и практики» . [6] Мартин описал его как основанный на принципе сцепления , описанном Томом ДеМарко в его книге «Структурный анализ и спецификация системы» . [7] и Мейлир Пейдж-Джонс в «Практическом руководстве по проектированию структурированных систем» . [8] В 2014 году Мартин опубликовал сообщение в блоге под названием «Принцип единой ответственности» с целью прояснить, что подразумевается под фразой «причина для изменений». [1]

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

В качестве примера рассмотрим модуль, который составляет и печатает отчет. Представьте себе, что такой модуль можно изменить по двум причинам. Во-первых, содержание отчета может измениться. Во-вторых, формат отчета может измениться. Эти две вещи меняются по разным причинам. Принцип единой ответственности гласит, что эти два аспекта проблемы на самом деле представляют собой две отдельные обязанности и, следовательно, должны быть выделены в отдельные классы или модули. Было бы плохим решением объединить две вещи, которые меняются по разным причинам в разное время.

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

См. также

[ редактировать ]
  1. ^ Мартин, Роберт С. (2018). Чистая архитектура: руководство для мастера по структуре и дизайну программного обеспечения . Бостон. ISBN  978-0-13-449432-6 . OCLC   1003645626 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  2. ^ Мартин, Роберт С. (2003). Гибкая разработка программного обеспечения, принципы, шаблоны и практики . Прентис Холл. п. 95. ИСБН  978-0135974445 .
  3. ^ Мартин, Роберт С. (2014). «Принцип единой ответственности» . Блог «Чистый код» .
  4. ^ Роберт С. Мартин (2018). Чистая архитектура: Руководство для мастера по структуре и дизайну программного обеспечения . Прентис Холл. ISBN  978-0-13-449416-6 .
  5. ^ Мартин, Роберт С. (2005). «Принципы ООД» . Butunclebob.com .
  6. ^ Мартин 2003 , стр. 95–98.
  7. ^ ДеМарко, Том. (1979). Структурный анализ и спецификация системы . Прентис Холл . ISBN  0-13-854380-1 .
  8. ^ Пейдж-Джонс, Мейлир (1988). Практическое руководство по проектированию структурированных систем . Серия «Yourdon Press Computing» . п. 82. ИСБН  978-8120314825 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2adb7d3a8549ee155406b0887657f328__1716544200
URL1:https://arc.ask3.ru/arc/aa/2a/28/2adb7d3a8549ee155406b0887657f328.html
Заголовок, (Title) документа по адресу, URL1:
Single-responsibility principle - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)