SOLID (объектно-ориентированное программирование)

Материал из Википедии — свободной энциклопедии
(перенаправлено с «SOLID»)
Перейти к навигации Перейти к поиску

SOLID (сокр. от англ. single responsibility, open–closed, Liskov substitution, interface segregation и dependency inversion) в программировании — мнемонический акроним, введённый Майклом Фэзерсом (Michael Feathers) для первых пяти принципов, названных Робертом Мартином[1][2] в начале 2000-х[3], которые означали 5 основных принципов объектно-ориентированного программирования и проектирования.

Для чего нужны принципы SOLID[править | править код]

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

Стратегии гибкой и адаптивной разработки[en][3] предполагают написание кода с соблюдением принципов 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].

См. также[править | править код]

Примечания[править | править код]

  1. 1 2 Мартин, Роберт (Дядя Боб). Principles Of OOD. butunclebob.com. Дата обращения: 3 мая 2016. (прим. отсылка на «first five principles», то есть в статье не используется акроним.)
  2. Мартин, Роберт (Дядя Боб). Getting a SOLID start. objectmentor.com. Дата обращения: 3 мая 2016.
  3. 1 2 3 Sandi Metz (Duke University). SOLID Object-Oriented Design (недоступная ссылка). Дата обращения: 3 мая 2016. Архивировано 29 марта 2014 года. Выступление на конференции «2009 Gotham Ruby Conference» в мае 2009.
  4. 1 2 Роберт С. Мартин, Мика Мартин. Принципы, паттерны и методики гибкой разработки на языке C#. — СПб.: Символ-плюс, 2011. — С. 8. — 768 с. — ISBN 978-5-93286-197-4.
  5. Single Responsibility Principle. Архивировано 1 июня 2015 года.
  6. Open/Closed Principle. Архивировано 5 сентября 2015 года.
  7. Liskov Substitution Principle. Архивировано 5 сентября 2015 года.
  8. Interface Segregation Principle (1996). Архивировано 5 сентября 2015 года.
  9. 1 2 Мартин, Роберт (Дядя Боб). Design Principles and Design Patterns. objectmentor.com (2000). Дата обращения: 14 января 2009. Архивировано 6 сентября 2015 года.
  10. Dependency Inversion Principle. Архивировано 5 сентября 2015 года.

Литература[править | править код]

Ссылки[править | править код]