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 на основі свого досвіду у розробці програмного забезпечення та консультуванні проектів. Він бачив, що певні структурні та організаційні проблеми в програмах збільшували складність коду, зростали витрати на зміни та розширення, і зводили нанівець практичність та переваги об'єктно-орієнтованого програмування[джерело?].

Див. також

ред.

Основні поняття та суміжні теми

ред.

Принципи проєктування та розробки

ред.

Посилання

ред.

Примітки

ред.
  1. а б Robert C. Martin. Getting a SOLID start. objectmentor.com. Архів оригіналу за 26 грудня 2016. Процитовано 19 серпня 2013.
  2. Martin, Robert C. (2000). Design Principles and Design Patterns (PDF). Архів оригіналу (PDF) за 6 вересня 2015.