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

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

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

Ҷадвали Мундариҷа

Вақти тахминии хониш: 7 дақиқаҳо

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

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

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

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

ихтисораи 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

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

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

Чӣ тавр беҳтарин тартиб додани маълумот ва формулаҳо дар Excel, барои таҳлили хуб

Microsoft Excel воситаи истинод барои таҳлили додаҳо мебошад, зеро он барои ташкили маҷмӯи додаҳо хусусиятҳои зиёде пешниҳод мекунад,…

14 Май 2024

Хулосаи мусбӣ барои ду лоиҳаи муҳими Walliance Equity Crowdfunding: Ҷазираи Ҷесоло Вав ва Милан Виа Равенна

Walliance, SIM ва платформа дар байни пешвоёни Аврупо дар соҳаи Crowdfunding Estate Estate аз соли 2017 ба итмом расидани…

13 Май 2024

Filament чист ва чӣ тавр истифода бурдани Laravel Filament

Filament як чаҳорчӯбаи рушди "суръати" Laravel мебошад, ки якчанд ҷузъҳои пурраи стекро таъмин мекунад. Он барои содда кардани раванди…

13 Май 2024

Зери назорати интеллектуалии сунъӣ

«Ман бояд баргардам, то эволютсияи худро анҷом диҳам: ман худро дар дохили компютер тарҳрезӣ мекунам ва энергияи пок хоҳам кард. Як бор дар…

10 Май 2024

Зеҳни нави сунъии Google метавонад ДНК, РНК ва "ҳамаи молекулаҳои ҳаёт" -ро модел кунад

Google DeepMind версияи такмилёфтаи модели зеҳни сунъии худро муаррифӣ мекунад. Модели нави такмилёфта на танҳо…

9 Май 2024

Омӯзиши меъмории модулии Ларавел

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

9 Май 2024

Cisco Hypershield ва ба даст овардани Splunk Давраи нави амният оғоз меёбад

Cisco ва Splunk ба муштариён кӯмак мекунанд, ки саёҳати худро ба Маркази Амнияти Амният (SOC)-и оянда бо…

8 Май 2024

Ғайр аз паҳлӯи иқтисодӣ: арзиши номаълуми нармафзори ransomware

Ransomware дар ду соли охир дар хабарҳо бартарӣ дорад. Аксарияти одамон хуб медонанд, ки ҳамлаҳо…

6 Май 2024

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

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

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