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]
|
- Принцип единственной ответственности (single responsibility principle)
- У класса должна быть только одна причина для изменения.
- Или, как подметил Р. Мартин в книге «Чистая архитектура. Искусство разработки программного обеспечения», когда описывал эволюцию данного определения, окончательная версия принципа единственной ответственности выглядит так:
- «Модуль должен отвечать за одного и только за одного актора.»
|
O
|
OCP[6]
|
- Принцип открытости/закрытости (open-closed principle)
- «программные сущности … должны быть открыты для расширения, но закрыты для модификации».
|
L
|
LSP[7]
|
- Принцип подстановки Лисков (Liskov substitution principle)
- «функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа не зная об этом». См. также контрактное программирование.
|
I
|
ISP[8]
|
- Принцип разделения интерфейса (interface segregation principle)
- «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения»[9].
|
D
|
DIP[10]
|
- Принцип инверсии зависимостей (dependency inversion principle)
- «Зависимость на Абстракциях. Нет зависимости на что-то конкретное»[9].
|
Для чего нужны принципы SOLID
При создании программных систем использование принципов SOLID способствует созданию такой системы, которую будет легко поддерживать и расширять в течение долгого времени[3]. Принципы SOLID — это руководства, которые также могут применяться во время работы над существующим программным обеспечением для его улучшения, например, для удаления «дурно пахнущего кода».
Стратегии гибкой и адаптивной разработки предполагают написание кода с соблюдением принципов SOLID.
См. также
Примечания
Литература
- Роберт С. Мартин, Джеймс В. Ньюкирк, Роберт С. Косс. Быстрая разработка программ. Принципы, примеры, практика. — Вильямс, 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.
Ссылки