Воситаҳои ёдгирии

SOLID кадом 5 принсипи барномасозии ба объект нигаронидашуда мебошанд

SOLID ин мухтасарест, ки ба панҷ принсипи тарроҳии ба объект нигаронидашуда (OOD ё OOP) ишора мекунад. Инҳо дастурҳое мебошанд, ки таҳиягарон метавонанд барои эҷоди нармафзоре истифода кунанд, ки идоракунӣ, нигоҳдорӣ ва тамдиди он осон аст. Дарки ин мафҳумҳо ба шумо як таҳиягари беҳтар табдил медиҳад ва ба шумо кӯмак мекунад, ки аз мушкилоти идоракунии нармафзор пешгирӣ кунед. Барномасози хуб будан чӣ маъно дорад?

Ҳар касе, ки дорои таҷрибаи муайян дар барномарезии нармафзор аст, рамзи нармафзорро, ки дигарон навиштаанд, бо истифода аз параметрҳои доварӣ дар асоси роҳи касбашон доварӣ мекунад.

Дар тӯли фаъолияти касбии худ, ман бисёр таҳиягаронро мешинохтам ва ҳазорҳо сатри кодро дидам ва вақте ки ба малакаи таҳиягар ниёз дорам, ман асосан ба ду омил назар мекунам:

  • Соддагӣ дар хондани рамз;
  • То чӣ андоза кодекси онҳо бо мурури замон кор ва таҳаввул мешавад.

Хушбахтона, баъзе асосҳо ё принсипҳое мавҷуданд, ки дар рамзгузорӣ беҳтар шуданро осон мекунанд.

ихтисораи SOLID ифода мекунад:
S: принсипи масъулияти ягона
O: принсипи кушода пӯшида
L: Принсипи ивазкунии Лисков
I: Принсипи тақсимоти интерфейс
D: Принсипи тағирёбии вобастагӣ

Биёед аз таҳқиқи принсипи якуми SOLID шурӯъ кунем, яъне

Принсипи ягонаи масъулият

Синф (ё модул) бояд танҳо як сабаби тағир додан, таҳаввул дошта бошад.

Худи консепсия хеле содда аст, аммо барои ноил шудан ба ин соддагӣ роҳи татбиқ метавонад хеле мушкил бошад. Синф бояд танҳо як сабаби тағирро дошта бошад.

Аммо барои чӣ? 

Чаро муҳим аст, ки танҳо як сабаби тағир додан дошта бошем?

Масалан, агар барои тағир додани ду сабаби мухталиф вуҷуд дошта бошад, тасаввур кардан мумкин аст, ки ду дастаи гуногун метавонанд бо як сабаби гуногун бо як рамз кор кунанд. Ҳар яки онҳо бояд ҳалли худро амалӣ кунанд, ки дар сурати забони тартибдодашуда (ба монанди C ++, C # ё Java), метавонад боиси модулҳое гардад, ки бо гурӯҳҳои дигар ё қисматҳои дигари барнома номувофиқ бошанд.

Мисоли дигар, агар шумо забони тафсиркардаро истифода бурда истода бошед, пас шумо бояд як синф ё модулро бо сабабҳои гуногун аз нав санҷед. Ин маънои бештари кор, вақт ва саъй барои назорати сифатро дорад.

Муайян кардани як хусусияте, ки синф ё модул бояд дошта бошад, нисбат ба оддӣ нигоҳ кардани рӯйхати санҷиш барои санҷишҳо хеле мушкилтар аст. 

Аммо биёед кӯшиш кунем, ки аз нуқтаи назари техникӣ камтар фикр кунем, яъне кӯшиш кунем, ки корбари синф ё модули худро таҳлил кунем, ки онро истифода мебарад. Ҷанбаи асосие, ки мо бояд ҳамеша дар хотир дошта бошем, он аст, ки корбарони барнома ё системаи таҳиякардаи мо, ки аз ҷониби як модули мушаххас хидмат мекунанд, онҳое ҳастанд, ки тағиротҳоро дархост мекунанд. Хизматгорон хоҳиш мекунанд, ки синф ё модулро иваз кунанд. 

Баъзе намунаҳои модулҳо ва истифодаи онҳо:

  • Модули нигоҳдорӣ: корбар аз маъмурони пойгоҳи додаҳо ва меъморони нармафзор иборат аст.
  • Модули ҳисоботӣ: корбар аз кормандони идора, муҳосибон ва истеҳсолот иборат аст.
  • Модули ҳисобкунии пардохт барои системаи идоракунии музди меҳнат: корбарон метавонанд ҳуқуқшиносон, менеҷерон ва муҳосибонро дар бар гиранд.
  • Модули ҷустуҷӯи матн барои системаи идоракунии китобхона: корбаронро китобдор ё худи меҳмонон ва муштариёни китобхона намояндагӣ карда метавонанд.

Пас, агар қадами аввал ҷустуҷӯи актёрҳо ё актёре бошад, ки нақши ҳамсӯҳбатро бо модул дорад, алоқамандии шахсони алоҳида бо ҳама нақшҳо душвор буда метавонад. Дар як ширкати хурд як шахс метавонад якчанд нақшро иҷро кунад, дар як ширкати калон бошад, якчанд нафар одамоне ҳастанд, ки нақши ягона доранд. 

Ба ҷои он ки одамон ё корбарон, муайян кардани нақшҳо оқилонатар ба назар мерасанд.

Аз ин рӯ:

  • истифодаи системаи нармафзор defiсабабхои тагйиротро шарх медихад;
  • масъулият як оилаи функсияҳоест, ки талаботи як актёри мушаххас, яъне корбари системаро қонеъ мекунад;
  • фаъолон, корбар манбаи тағирёбии оилаи функсияҳо мегардад, ки бояд талаботи корбарро қонеъ кунанд;
  • эволютсияи ниёзҳои корбар, таҳаввулоти функсионалиро пеш мебарад;

Биёед баъзе мисолҳоро бубинем

Фарз мекунем, ки мо як синфи китоб дорем, ки мафҳуми китоб ва фаъолияти онро дар бар мегирад.

Китоби синф {

    Функсияи getTitle () {

        бозгаштан "Китоби бузург";

    }

    Функсияи getAuthor () {

        бозгашти "Алессандро Барикко";

    }

    вазифаи nextpage () {

        // саҳифаи оянда

    }

    функсияи printCurrentPage () {

        ҳамовоз "мундариҷаи саҳифаи ҷорӣ";

    }

}

Ин як синфи хеле муқаррарӣ аст. Мо китоб дорем ва синф метавонад ба мо унвон диҳад, онҳо метавонанд муаллифро ба мо диҳанд ва онҳо метавонанд ба роҳи худ идома диҳанд. Ниҳоят, он инчунин қодир аст, ки сафҳаи ҷориро дар экран чоп кунад. 

Бо вуҷуди ин, як мушкили хурд вуҷуд дорад. 

Дар бораи фаъолони марбут ба идоракунии объекти Китоб фикр карда, онҳо кӣ буда метавонанд? 

Мо дар ин ҷо ба осонӣ дар бораи ду бозигари мухталиф фикр карда метавонем: Идоракунии китоб (ҳамчун китобхон) e Механизми пешниҳоди маълумот (мисли он ки мо мехоҳем мундариҷаро ба корбар расонем: дар экран, интерфейси графикии корбар, интерфейси корбари танҳо матн, шояд чоп). 

Аз ин рӯ, мо ду бозигари хеле гуногун дорем, ки бо синф ҳамкорӣ мекунанд.

Дар кӯтоҳ, ин синф дар байни омезишҳо:

  • мантиқи тиҷорӣ бо 
  • муаррифӣ 

ин метавонад мушкилот эҷод кунад, зеро он принсипи ягонаи масъулиятро (SRP) вайрон мекунад. 

Чӣ гуна мо метавонем тағир диҳем, чӣ гуна метавонем ин рамзро барои эҳтироми принсипи масъулияти ягона такмил диҳем?

Ба коди зерин нигаред:

Китоби синф {

    Функсияи getTitle () {

        бозгаштан "Oceano Mare";

    }

    Функсияи getAuthor () {

        бозгашти "Алессандро Барикко";

    }

    функсияи гардиши саҳифа () {

        // саҳифаи оянда

    }

    Функсияи getCurrentPage () {

        ҳамовоз "мундариҷаи саҳифаи ҷорӣ";

    }

}

интерфейси Принтер {

    функсияи printPage ($ page);

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

}

class StampaLibro Printer-ро амалӣ мекунад {

    функсияи printPages ($ page) {

        echo $ page;

    }

}

 

Синфи HtmlPrinter Принтерро иҷро мекунад {

    функсияи printPages ($ page) {

        ҳамовоз ' '. $ саҳифа. ' ';

    }

}

Ин мисоли хеле содда нишон медиҳад, ки чӣ гуна презентатсияро аз мантиқи тиҷорӣ ҷудо кардан мумкин аст ва мутобиқи SRP он дар чандирии лоиҳаи мо бартариҳои калон фароҳам меорад.

Биёед як мисоли дигарро дида бароем:

Мисоли ба мисоли дар боло овардашуда он аст, ки объект метавонад худро аз презентатсия наҷот диҳад ва бозпас гирад.

Китоби синф {

    Функсияи getTitle () {

        бозгаштан "Oceano Mare";

    }

    Функсияи getAuthor () {

        бозгашти "Алессандро Барикко";

    }

    функсияи гардиши саҳифа () {

        // саҳифаи оянда

    }

    Функсияи getCurrentPage () {

        баргардонидан "мундариҷаи саҳифаи ҷорӣ";

    }

    Функсияи захира () {

        $ filename = '/ document /'. $ this-> getTitolo (). '-'. $ this-> getAuthor ();

        file_put_contents ($ номи файл, serialize ($ this));

    }

}

Мисли пештара, дар ин ҷо низ мо метавонем фаъолони гуногунро муайян кунем Идоракунии китоб (ҳамчун китобхон) e Матонат. Ҳар вақте ки мо мехоҳем тарзи гузаштан аз саҳифа ба сафҳаро дигар кунем, мо бояд ин синфро иваз кунем. Мо метавонем якчанд сабаби тағирот дошта бошем.

Китоби синф {

    Функсияи getTitle () {

        бозгаштан "Oceano Mare";

    }

    Функсияи getAuthor () {

        бозгашти "Алессандро Барикко";

    }

    функсияи гардиши саҳифа () {

        // саҳифаи оянда

    }

    Функсияи getCurrentPage () {

        баргардонидан "мундариҷаи саҳифаи ҷорӣ";

    }

}

синфи SimpleFilePersistence {

    функсияи захира (Китоби $ book) {

        $ filename = '/ document /'. $ book-> getTitle (). '-'. $ book-> getAuthor ();

        file_put_contents ($ номи файл, serialize ($ book));

    }

}

Гузариш додани амалиёти суботкорӣ ба синфи дигар масъулиятҳоро ба таври возеҳ ҷудо мекунад ва мо озод ҳастем бидуни таъсир ба синфи китоби худ мубодилаи усулҳои суботкориро ба роҳ монем. Масалан, татбиқи синфи DatabasePersistence ночиз хоҳад буд ва мантиқи тиҷории мо, ки дар атрофи амалиёти китоб сохта шудааст, тағир нахоҳад ёфт.

Бо хондани принсипи дуввуми Кушодан / Пӯшида -> идома диҳед

Ercole Palmeri

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Мақолаҳои охирин

Дахолати инноватсионӣ дар воқеияти васеъшуда бо тамошобини Apple дар поликлиникаи Катания

Дар поликлиникаи Катания амалиёти офтальмопластика бо истифода аз намоишгари тиҷоратии Apple Vision Pro анҷом дода шуд…

3 Май 2024

Манфиатҳои ранг кардани саҳифаҳо барои кӯдакон - ҷаҳони ҷодугарӣ барои ҳама синну сол

Рушди малакаҳои хуби моторӣ тавассути рангкунӣ кӯдаконро ба малакаҳои мураккабтаре, ба мисли навиштан омода мекунад. Барои ранг кардан…

2 Май 2024

Оянда ин аст: Чӣ гуна саноати боркашонӣ иқтисоди ҷаҳонро инқилоб мекунад

Бахши баҳрӣ як қудрати воқеии иқтисодии ҷаҳонӣ аст, ки ба бозори 150 миллиард доллар ҳаракат кардааст ...

1 Май 2024

Ноширон ва OpenAI барои танзими ҷараёни иттилооте, ки тавассути зеҳни сунъӣ коркард мешаванд, созишнома имзо мекунанд

Рӯзи душанбеи гузашта рӯзномаи Financial Times бо OpenAI созишнома эълон кард. FT журналистикаи сатҳи ҷаҳонии худро иҷозатнома медиҳад…

30 апрел 2024

Инноватсияро ба забони худ хонед

Бюллетени инноватсионӣ
Муҳимтарин хабарҳоро дар бораи навоварӣ аз даст надиҳед. Барои гирифтани онҳо тавассути почтаи электронӣ обуна шавед.

Моро дунбол кунед