WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

Описание

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

Признаки плохого проекта

  • Закрепощённость: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект "снежного кома", затрагивающего другие компоненты системы.
  • Неустойчивость: в результате осуществляемых изменений система разрушается в тех местах, которые не имеют прямого отношения к непосредственно изменяемому компоненту.
  • Неподвижность: достаточно трудно разделить систему на компоненты, которые могли бы повторно использоваться в других системах.
  • Вязкость: сделать что-то правильно намного сложнее, чем выполнить какие-либо некорректные действия.
  • Неоправданная сложность: проект включает инфраструктуру, применение которой не влечёт непосредственной выгоды.
  • Неопределенность: исходный код трудно читать и понимать. Недостаточно четко выражено содержимое проекта.

Принципы

Избавиться от "признаков плохого проекта"[4] помогают следующие пять принципов SOLID:

Инициал Представляет[1] Название[4], понятие
S SRP[5]
Принцип единственной ответственности (The Single Responsibility Principle)
Каждый класс выполняет лишь одну задачу.
O OCP[6]
Принцип открытости/закрытости (The Open Closed Principle)
«программные сущности … должны быть открыты для расширения, но закрыты для модификации.»
L LSP[7]
Принцип подстановки Барбары Лисков (The Liskov Substitution Principle)
«объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы.» См. также контрактное программирование.

Наследующий класс должен дополнять, а не изменять базовый.

I ISP[8]
Принцип разделения интерфейса (The Interface Segregation Principle)
«много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения.»[9]
D DIP[10]
Принцип инверсии зависимостей (The 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. Выступление на конференции «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 Мартин, Роберт (Дядя Боб) (2000), Design Principles and Design Patterns, objectmentor.com, <http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf>. Проверено 14 января 2009.
  10. Dependency Inversion Principle. Архивировано 5 сентября 2015 года.

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии