SOLID (об'єктно-орієнтоване програмування)
SOLID — це абревіатура, складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну і запропонована Робертом Мартіном у статті 2000 року англ. Design Principles and Design Patterns[1][2].
Принципи SOLID використовують для дизайну та розробки таких програмних систем, які, з великою ймовірністю, зможуть тривалий час розвиватися, розширятися і підтримуватися.
Як зазначає сам автор, запропоновані ним принципи не є «істиною в останній інстанції», правилами, або ж суворими законами. У нього немає доказів, що вони завжди працюють, або ж, що їх слід неухильно дотримуватись. Проте, вони були сформульовані на основі спостережень і зазвичай допомагають уникнути проблем[1].
Опис
ред.Буква | Абревіатура | Назва |
---|---|---|
S | SRP |
Принцип єдиної відповідальності (Single responsibility principle): Для кожного об'єкту має бути визначена єдина зона відповідальності. |
O | OCP |
Принцип відкритості/закритості (Open/closed principle): Програмні сутності повинні бути відкритими для розширення, але закритими для змін. Тобто, має бути спосіб змінювати поведінку програмних модулів без потреби змінювати їхній вихідний код (наприклад, через механізм динамічного або статичного поліморфізму). |
L | LSP |
Принцип підстановки Лісков (Liskov substitution principle): Об'єкти в програмі можуть бути заміненими їхніми нащадками без зміни коду програми. |
I | ISP |
Принцип розділення інтерфейсу (Interface segregation principle): Багато спеціалізованих інтерфейсів краще за один універсальний. Інтерфейс може бути поділений на спеціалізовані ще на стадії проєктування, заради майбутньої гнучкості програмних компонентів. |
D | DIP |
Принцип інверсії залежностей (Dependency inversion principle): Залежності всередині системи будуються на основі абстракцій, що не повинні залежати від деталей; навпаки, деталі мають залежати від абстракцій. Модулі вищих рівнів не мають залежати від модулів нижчих рівнів. |
SOLID та ООП
ред.Дані принципи дуже тісно корелюють з принципами об'єктно-орієнтованого програмування. Зокрема принцип підстановки Барбари Лісков уособлює успадкування, він може трактуватися так: об'єкт, клас якого успадкований від іншого класу, отримує методи останнього. Принцип інверсії залежностей — це більш розширене трактування поліморфізму. А принцип єдиної відповідальності тісно пов'язаний з інкапсуляцією, що також передбачає існування інкапсульованого (відокремленого) набору методів.
Історія та походження
ред.Ці принципи були сформульовані Робертом Мартіном (також відомим як «Дядько Боб») і вперше представлені у його книзі «Design Principles and Design Patterns» (пізніше перейменованій на «Agile Software Development, Principles, Patterns, and Practices») у 2000 році[джерело?].
Роберт Мартін розробляв принципи SOLID на основі свого досвіду у розробці програмного забезпечення та консультуванні проектів. Він бачив, що певні структурні та організаційні проблеми в програмах збільшували складність коду, зростали витрати на зміни та розширення, і зводили нанівець практичність та переваги об'єктно-орієнтованого програмування[джерело?].
Див. також
ред.Основні поняття та суміжні теми
ред.- Адаптивна розробка програмного забезпечення
- Гнучка розробка програмного забезпечення
- Повторне використання коду
- Об'єктно-орієнтоване програмування
- Шаблони проєктування програмного забезпечення
Принципи проєктування та розробки
ред.Посилання
ред.- Principles Of OOD [Архівовано 25 жовтня 2016 у Wayback Machine.] (англ.) — Посилання на докладні статті про SOLID.
- An introduction to the SOLID principles of OO design [Архівовано 10 жовтня 2014 у Wayback Machine.] (англ.)
Примітки
ред.- ↑ а б Robert C. Martin. Getting a SOLID start. objectmentor.com. Архів оригіналу за 26 грудня 2016. Процитовано 19 серпня 2013.
- ↑ Martin, Robert C. (2000). Design Principles and Design Patterns (PDF). Архів оригіналу (PDF) за 6 вересня 2015.