SOLID — це абревіатура, складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну і запропонована Робертом Мартіном у статті 2000 року .
Принципи SOLID використовують для дизайну та розробки таких програмних систем, які, з великою ймовірністю, зможуть тривалий час розвиватися, розширятися і підтримуватися.
Як зазначає сам автор, запропоновані ним принципи не є «істиною в останній інстанції», правилами, або ж суворими законами. У нього немає доказів, що вони завжди працюють, або ж, що їх слід неухильно дотримуватись. Проте, вони були сформульовані на основі спостережень і зазвичай допомагають уникнути проблем.
Опис
Буква Абревіатура Назва 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 на основі свого досвіду у розробці програмного забезпечення та консультуванні проектів. Він бачив, що певні структурні та організаційні проблеми в програмах збільшували складність коду, зростали витрати на зміни та розширення, і зводили нанівець практичність та переваги об'єктно-орієнтованого програмування.
Див. також
Основні поняття та суміжні теми Адаптивна розробка програмного забезпечення Гнучка розробка програмного забезпечення Повторне використання коду Об'єктно-орієнтоване програмування Шаблони проєктування програмного забезпечення
Принципи проєктування та розробки GRASP DRY KISS YAGNI
Посилання Principles Of OOD — Посилання на докладні статті про SOLID. An introduction to the SOLID principles of OO design
Примітки