Принцип единоначалия - Single-responsibility principle

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

Роберт К. Мартин , создатель термина, выражает принцип следующим образом: «У класса должна быть только одна причина для изменения», хотя из-за путаницы вокруг слова «причина» он также заявил: «Этот принцип касается людей». . В некоторых своих выступлениях он также утверждает, что принцип касается, в частности, ролей или актеров. Например, хотя это может быть один и тот же человек, роль бухгалтера отличается от роли администратора базы данных. Следовательно, каждый модуль должен отвечать за каждую роль.

История

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

Пример

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

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

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

Смотрите также

Рекомендации

  1. ^ а б Мартин, Роберт С. (2003). Гибкая разработка программного обеспечения, принципы, шаблоны и практики . Прентис Холл. п. 95. ISBN 978-0135974445.
  2. ^ Мартин, Роберт С. (2014). «Принцип единой ответственности» . Блог чистого кода .
  3. ^ Роберт С. Мартин (2018). Чистая архитектура: Руководство по структуре и дизайну программного обеспечения . Прентис Холл. ISBN 978-0-13-449416-6.
  4. ^ Мартин, Роберт С. (2005). «Принципы OOD» . butunclebob.com .
  5. Перейти ↑ Martin 2003 , pp. 95-98
  6. ^ Демарко, Том. (1979). Структурированный анализ и спецификация системы . Прентис Холл . ISBN 0-13-854380-1.
  7. ^ Пейдж-Джонс, Мейлир (1988). Практическое руководство по проектированию структурированных систем . Серия Yourdon Press Computing . п. 82. ISBN 978-8120314825.

Внешние ссылки