SOLID (сокр. от англ. single responsibility, open–closed, Liskov substitution, interface segregation и dependency inversion) в программировании — мнемонический акроним, введённый Майклом Фэзерсом (Michael Feathers) для первых пяти принципов, названных Робертом Мартином[1][2] в начале 2000-х[3], которые означали 5 основных принципов объектно-ориентированных проектирования и программирования.
Однако, принципы SOLID применимы не только к объектно-ориентированному программному коду. Использование слова «класс» означает лишь инструмент объединения функций и данных в группы. Любая программная система имеет такие объединения, например, это может быть «модуль».
Принципы
правитьИзбавиться от «признаков плохого проекта»[4] помогают следующие 5 принципов SOLID:
Инициал | Представляет[1] | Название[4], понятие |
---|---|---|
S | SRP[5] |
|
O | OCP[6] |
|
L | LSP[7] |
|
I | ISP[8] |
|
D | DIP[10] |
|
Для чего нужны принципы SOLID
правитьПри создании программных систем использование принципов SOLID способствует созданию такой системы, которую будет легко поддерживать и расширять в течение долгого времени[3]. Принципы SOLID — это руководства, которые также могут применяться во время работы над существующим программным обеспечением для его улучшения, например, для удаления «дурно пахнущего кода».
Стратегии гибкой и адаптивной разработки предполагают написание кода с соблюдением принципов SOLID.
См. также
правитьПримечания
править- ↑ 1 2 Мартин, Роберт. Principles Of OOD . butunclebob.com. Дата обращения: 3 мая 2016. Архивировано 25 октября 2016 года. (прим. отсылка на «first five principles», то есть в статье не используется акроним.)
- ↑ Мартин, Роберт. Getting a SOLID start . objectmentor.com. Дата обращения: 3 мая 2016. Архивировано 26 декабря 2016 года.
- ↑ 1 2 Sandi Metz (Duke University). SOLID Object-Oriented Design . Дата обращения: 3 мая 2016. Архивировано из оригинала 29 марта 2014 года. Выступление на конференции «2009 Gotham Ruby Conference» в мае 2009.
- ↑ 1 2 Роберт С. Мартин, Мика Мартин. Принципы, паттерны и методики гибкой разработки на языке C#. — СПб.: Символ-плюс, 2011. — С. 8. — 768 с. — ISBN 978-5-93286-197-4.
- ↑ Single Responsibility Principle . Архивировано 2 февраля 2015 года.
- ↑ Open/Closed Principle . Архивировано 5 сентября 2015 года.
- ↑ Liskov Substitution Principle . Архивировано 5 сентября 2015 года.
- ↑ Interface Segregation Principle (1996). Архивировано 5 сентября 2015 года.
- ↑ 1 2 Мартин, Роберт. Design Principles and Design Patterns . objectmentor.com (2000). Дата обращения: 14 января 2009. Архивировано 6 сентября 2015 года.
- ↑ Dependency Inversion Principle . Архивировано 5 сентября 2015 года.
Литература
править- Роберт С. Мартин, Джеймс В. Ньюкирк, Роберт С. Косс. Быстрая разработка программ. Принципы, примеры, практика. — Вильямс, 2004, ISBN 5-8459-0558-3, ISBN 0-13-597444-5.
- Мартин Р., Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#. — Символ-Плюс, 2011, ISBN 5-93286-197-5, ISBN 978-5-93286-197-4, ISBN 0-13-185725-8, ISBN 978-0-13-185725-4.
- Мартин, Р. Чистая архитектура. Искусство разработки программного обеспечения. = Clean architecture. A Craftsman’s Guide to Software Structure and Design. — Питер, 2018. — ISBN 978-5-4461-0772-8.
Ссылки
править- Principles Of OOD (англ.) — Описание и ссылки на подробные статьи о SOLID.