SOLID — це абревіатура, складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну і запропонована Робертом Мартіном у статті 2000 року англ. Design Principles and Design Patterns.
Принципи 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 на основі свого досвіду у розробці програмного забезпечення та консультуванні проектів. Він бачив, що певні структурні та організаційні проблеми в програмах збільшували складність коду, зростали витрати на зміни та розширення, і зводили нанівець практичність та переваги об'єктно-орієнтованого програмування[].
Див. також
Основні поняття та суміжні теми
- Адаптивна розробка програмного забезпечення
- Гнучка розробка програмного забезпечення
- Повторне використання коду
- Об'єктно-орієнтоване програмування
- Шаблони проєктування програмного забезпечення
Принципи проєктування та розробки
Посилання
- Principles Of OOD [ 25 жовтня 2016 у Wayback Machine.] (англ.) — Посилання на докладні статті про SOLID.
- An introduction to the SOLID principles of OO design [ 10 жовтня 2014 у Wayback Machine.] (англ.)
Примітки
- Robert C. Martin. . objectmentor.com. Архів оригіналу за 26 грудня 2016. Процитовано 19 серпня 2013.
- Martin, Robert C. (2000). (PDF). Архів оригіналу (PDF) за 6 вересня 2015.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
SOLID ce abreviatura skladena z pershih liter p yati bazovih principiv ob yektno oriyentovanogo programuvannya ta dizajnu i zaproponovana Robertom Martinom u statti 2000 roku angl Design Principles and Design Patterns Principi SOLID vikoristovuyut dlya dizajnu ta rozrobki takih programnih sistem yaki z velikoyu jmovirnistyu zmozhut trivalij chas rozvivatisya rozshiryatisya i pidtrimuvatisya Yak zaznachaye sam avtor zaproponovani nim principi ne ye istinoyu v ostannij instanciyi pravilami abo zh suvorimi zakonami U nogo nemaye dokaziv sho voni zavzhdi pracyuyut abo zh sho yih slid neuhilno dotrimuvatis Prote voni buli sformulovani na osnovi sposterezhen i zazvichaj dopomagayut uniknuti problem OpisBukva Abreviatura Nazva S SRP Princip yedinoyi vidpovidalnosti Single responsibility principle Dlya kozhnogo ob yektu maye buti viznachena yedina zona vidpovidalnosti O OCP Princip vidkritosti zakritosti Open closed principle Programni sutnosti povinni buti vidkritimi dlya rozshirennya ale zakritimi dlya zmin Tobto maye buti sposib zminyuvati povedinku programnih moduliv bez potrebi zminyuvati yihnij vihidnij kod napriklad cherez mehanizm dinamichnogo abo statichnogo polimorfizmu L LSP Princip pidstanovki Liskov Liskov substitution principle Ob yekti v programi mozhut buti zaminenimi yihnimi nashadkami bez zmini kodu programi I ISP Princip rozdilennya interfejsu Interface segregation principle Bagato specializovanih interfejsiv krashe za odin universalnij Interfejs mozhe buti podilenij na specializovani she na stadiyi proyektuvannya zaradi majbutnoyi gnuchkosti programnih komponentiv D DIP Princip inversiyi zalezhnostej Dependency inversion principle Zalezhnosti vseredini sistemi buduyutsya na osnovi abstrakcij sho ne povinni zalezhati vid detalej navpaki detali mayut zalezhati vid abstrakcij Moduli vishih rivniv ne mayut zalezhati vid moduliv nizhchih rivniv SOLID ta OOPDani principi duzhe tisno korelyuyut z principami ob yektno oriyentovanogo programuvannya Zokrema princip pidstanovki Barbari Liskov uosoblyuye uspadkuvannya vin mozhe traktuvatisya tak ob yekt klas yakogo uspadkovanij vid inshogo klasu otrimuye metodi ostannogo Princip inversiyi zalezhnostej ce bilsh rozshirene traktuvannya polimorfizmu A princip yedinoyi vidpovidalnosti tisno pov yazanij z inkapsulyaciyeyu sho takozh peredbachaye isnuvannya inkapsulovanogo vidokremlenogo naboru metodiv Istoriya ta pohodzhennyaCi principi buli sformulovani Robertom Martinom takozh vidomim yak Dyadko Bob i vpershe predstavleni u jogo knizi Design Principles and Design Patterns piznishe perejmenovanij na Agile Software Development Principles Patterns and Practices u 2000 roci dzherelo Robert Martin rozroblyav principi SOLID na osnovi svogo dosvidu u rozrobci programnogo zabezpechennya ta konsultuvanni proektiv Vin bachiv sho pevni strukturni ta organizacijni problemi v programah zbilshuvali skladnist kodu zrostali vitrati na zmini ta rozshirennya i zvodili nanivec praktichnist ta perevagi ob yektno oriyentovanogo programuvannya dzherelo Div takozhOsnovni ponyattya ta sumizhni temi Adaptivna rozrobka programnogo zabezpechennya Gnuchka rozrobka programnogo zabezpechennya Povtorne vikoristannya kodu Ob yektno oriyentovane programuvannya Shabloni proyektuvannya programnogo zabezpechennya Principi proyektuvannya ta rozrobki GRASP DRY KISS YAGNIPosilannyaPrinciples Of OOD 25 zhovtnya 2016 u Wayback Machine angl Posilannya na dokladni statti pro SOLID An introduction to the SOLID principles of OO design 10 zhovtnya 2014 u Wayback Machine angl PrimitkiRobert C Martin objectmentor com Arhiv originalu za 26 grudnya 2016 Procitovano 19 serpnya 2013 Martin Robert C 2000 PDF Arhiv originalu PDF za 6 veresnya 2015