Лабораторно упражнение 1

Принципите SOLID

Принципите SOLID са въведени от Робърт Ч. Мартин в неговия труд от 2000 г. "Принципи на дизайна и модели на дизайна". Това понятие по-късно са надградено от Майкъл Пера, който въвежда акронима SOLID. През последните 20 години тези пет принципа революционизираха света на обектно-ориентираното програмиране, променяйки начина, по който се пише софтуер.

Какво е SOLID и как ни помага да напишем по-добър код?

Казано по-просто, дизайнерските принципи на Мартин и Перата ни насърчават да създаваме по-поддържаем, разбираем и гъвкав софтуер. Следователно, въпреки неизбежноста от това, че нашите приложения растат по размер, ние можем да намалим тяхната сложност и да си спестим много главоболия по пътя на разработване!

Нека да разгледаме следния пример:

Когато една сграда се строи с лоши тухли, архитектурата на сградата няма голямо значение. От друга страна ако не знаем как да редим тухлите бъркотията също може да е голяма.

Ако разгледаме примера в програмирането това е мястото къдто влизат принципите на SOLID. Принципите на SOLID ни казват как да подредим нашите функции и структури от данни в класове и как тези класове трябва да бъдат свързани помежду си.

Използването на Думата „клас” не означава, че тези принципи са приложими само към обектно-ориентираното програмиране. Класът е просто свързано групиране на функции и данни. Всяка софтуерна система има такива групи, независимо дали се наричат класове или не. Принципите на SOLID се прилагат за тези групи от функции и данни и дори до по ниско ниво като функция или структура от данни, които ще наричаме елементи/елементи на софтуера

Следните пет понятия съставляват 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

Принцип на обръщане на зависимостите

Всички класове от високо ниво трябва да дефинират абстракции и нито един не трябва да зависи от конкретен клас. Класовете от ниско ниво, може да зависят от абстракциите.

Last updated