Принцип единой ответственности
ТВЕРДЫЙ |
---|
Принципы |
Принцип единой ответственности ( SRP ) — это принцип компьютерного программирования, который гласит, что «Модуль должен нести ответственность перед одним и только одним субъектом». [1] Термин «субъект» относится к группе (состоящей из одного или нескольких заинтересованных сторон или пользователей), которой требуется изменение в модуле.
Роберт К. Мартин , создатель этого термина, выражает этот принцип следующим образом: «У класса должна быть только одна причина для изменений». [2] Из-за путаницы вокруг слова «причина» он позже разъяснил его значение в сообщении в блоге под названием «Принцип единой ответственности», в котором он упомянул разделение ответственности и заявил, что «Другая формулировка принципа единой ответственности такова: Соберите вместе вещи, которые меняются по одним и тем же причинам. Разделите те вещи, которые меняются по разным причинам.». [3] В некоторых своих выступлениях он также утверждает, что принцип касается, в частности, ролей или актеров. Например, хотя это может быть один и тот же человек, роль бухгалтера отличается от роли администратора базы данных. Следовательно, каждый модуль должен отвечать за каждую роль. [4]
История
[ редактировать ]Этот термин был введен Робертом К. Мартином в его статье «Принципы ООД» как часть его «Принципов объектно-ориентированного проектирования » . [5] стал популярным благодаря его книге 2003 года « Гибкая разработка программного обеспечения, принципы, шаблоны и практики» . [6] Мартин описал его как основанный на принципе сцепления , описанном Томом ДеМарко в его книге «Структурный анализ и спецификация системы» . [7] и Мейлир Пейдж-Джонс в «Практическом руководстве по проектированию структурированных систем» . [8] В 2014 году Мартин опубликовал сообщение в блоге под названием «Принцип единой ответственности» с целью прояснить, что подразумевается под фразой «причина для изменений». [1]
Пример
[ редактировать ]Мартин определяет ответственность как причину изменения и приходит к выводу, что у класса или модуля должна быть одна и только одна причина для изменения (например, переписывания).
В качестве примера рассмотрим модуль, который составляет и печатает отчет. Представьте себе, что такой модуль можно изменить по двум причинам. Во-первых, содержание отчета может измениться. Во-вторых, формат отчета может измениться. Эти две вещи меняются по разным причинам. Принцип единой ответственности гласит, что эти два аспекта проблемы на самом деле представляют собой две отдельные обязанности и, следовательно, должны быть выделены в отдельные классы или модули. Было бы плохим решением объединить две вещи, которые меняются по разным причинам в разное время.
Причина, по которой важно сосредоточить внимание класса на одной задаче, заключается в том, что это делает класс более надежным. Продолжая предыдущий пример, отметим, что при изменении процесса компиляции отчета существует большая опасность того, что код печати сломается, если он является частью того же класса.
См. также
[ редактировать ]- Схема цепочки ответственности
- Соединение (компьютерное программирование)
- GRASP (объектно-ориентированное проектирование)
- Скрытие информации
- SOLID — буква «S» в слове «SOLID» представляет принцип единой ответственности.
- Разделение интересов
Ссылки
[ редактировать ]- ^ Мартин, Роберт С. (2018). Чистая архитектура: руководство для мастера по структуре и дизайну программного обеспечения . Бостон. ISBN 978-0-13-449432-6 . OCLC 1003645626 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ Мартин, Роберт С. (2003). Гибкая разработка программного обеспечения, принципы, шаблоны и практики . Прентис Холл. п. 95. ИСБН 978-0135974445 .
- ^ Мартин, Роберт С. (2014). «Принцип единой ответственности» . Блог «Чистый код» .
- ^ Роберт С. Мартин (2018). Чистая архитектура: Руководство для мастера по структуре и дизайну программного обеспечения . Прентис Холл. ISBN 978-0-13-449416-6 .
- ^ Мартин, Роберт С. (2005). «Принципы ООД» . Butunclebob.com .
- ^ Мартин 2003 , стр. 95–98.
- ^ ДеМарко, Том. (1979). Структурный анализ и спецификация системы . Прентис Холл . ISBN 0-13-854380-1 .
- ^ Пейдж-Джонс, Мейлир (1988). Практическое руководство по проектированию структурированных систем . Серия «Yourdon Press Computing» . п. 82. ИСБН 978-8120314825 .
Внешние ссылки
[ редактировать ]- « Принципы ООД », Роберт Мартин
- « Принцип единственной ответственности (2007) » Роберта Мартина
- « Принцип единой ответственности (2014) » Роберта Мартина