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

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

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

История

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

Пример

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

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

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

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

  1. ^ а б Мартин, Роберт С. (2003). Гибкая разработка программного обеспечения, принципы, шаблоны и практики. Прентис Холл. п. 95. ISBN  978-0135974445.CS1 maint: ref = harv (ссылка на сайт)
  2. ^ «Принцип единой ответственности». СтатьяS.UncleBob. 2014 г.
  3. ^ «Принципы OOD». СтатьяS.UncleBob. 2005 г.
  4. ^ Мартин 2003, стр. 95-98
  5. ^ Демарко, Том. (1979). Структурированный анализ и спецификация системы. Prentice Hall. ISBN  0-13-854380-1.
  6. ^ Пейдж-Джонс, Мейлир (1988). Практическое руководство по проектированию структурированных систем. Серия Yourdon Press Computing. п. 82. ISBN  978-8120314825.

внешняя ссылка