Принцип единоначалия - Single-responsibility principle
ТВЕРДЫЙ |
---|
Принципы |
В принцип единоначалия (SRP) - принцип компьютерного программирования, согласно которому каждый модуль, класс или же функция в компьютерная программа должен нести ответственность за отдельную часть программы функциональность, который должен инкапсулировать. Весь этот модуль, класс или функция Сервисы должны быть тесно связаны с этой ответственностью.[1]
Роберт С. Мартин, автор термина, выражает принцип следующим образом: «У класса должна быть только одна причина для изменения»,[1] хотя из-за путаницы вокруг слова «причина» он недавно заявил: «Этот принцип касается людей».[2]
История
Термин был введен Роберт С. Мартин в одноименной статье как части его Принципы объектно-ориентированного дизайна,[3] сделал популярным его книга Гибкая разработка программного обеспечения, принципы, шаблоны и практики.[4] Мартин описал это как основанное на принципе сплоченность, как описано Том ДеМарко в его книге Структурированный анализ и спецификация системы,[5] и Мейлир Пейдж-Джонс в Практическое руководство по проектированию структурированных систем.[6] В 2014 году Мартин написал в блоге сообщение под названием Принцип единой ответственности с целью прояснить, что подразумевается под фразой «причина изменения».
Пример
Мартин определяет ответственность как причина изменитьи заключает, что у класса или модуля должна быть одна и только одна причина для изменения (например, переписывания). В качестве примера рассмотрим модуль, составляющий и распечатывающий отчет. Представьте, что такой модуль можно изменить по двум причинам. Во-первых, может измениться содержание отчета. Во-вторых, может измениться формат отчета. Эти две вещи меняются по очень разным причинам; одно основное и одно косметическое. Принцип единственной ответственности гласит, что эти два аспекта проблемы на самом деле являются двумя отдельными обязанностями и, следовательно, должны находиться в разных классах или модулях. Было бы плохим сочетанием двух вещей, которые меняются по разным причинам в разное время.
Причина, по которой важно сосредоточить класс на одной задаче, состоит в том, что это делает класс более надежным. Продолжая предыдущий пример, если есть изменение в процессе компиляции отчета, существует большая опасность того, что код печати сломается, если он является частью того же класса.
Смотрите также
- Разделение проблем
- Схема цепочки ответственности
- Сплоченность (информатика)
- Принцип открытия / закрытия
- ТВЕРДЫЙ - "S" в "SOLID" означает принцип единственной ответственности.
- GRASP (объектно-ориентированный дизайн)
Рекомендации
- ^ а б Мартин, Роберт С. (2003). Гибкая разработка программного обеспечения, принципы, шаблоны и практики. Прентис Холл. п. 95. ISBN 978-0135974445.CS1 maint: ref = harv (ссылка на сайт)
- ^ «Принцип единой ответственности». СтатьяS.UncleBob. 2014 г.
- ^ «Принципы OOD». СтатьяS.UncleBob. 2005 г.
- ^ Мартин 2003, стр. 95-98
- ^ Демарко, Том. (1979). Структурированный анализ и спецификация системы. Prentice Hall. ISBN 0-13-854380-1.
- ^ Пейдж-Джонс, Мейлир (1988). Практическое руководство по проектированию структурированных систем. Серия Yourdon Press Computing. п. 82. ISBN 978-8120314825.