SOLID 5 prensîbên bernamekirina object-oriented çi ne

Reqemên geometrîk ên zexm solid
perwerdeya
1

SOLID kurtayiyek e, ku behsa pênc prensîbên sêwirana object-oriented (OOD an OOP) dike. Van rêgezên ku pêşdebir dikarin bikar bînin da ku nermalav biafirînin ku birêve birin, parastin û dirêjkirin. Famkirina van têgehan dê we pêşvebirrek çêtir çêbike û alîkariya we bike ku hûn ji pirsgirêkên rêveberiya nermalavê dûr bisekinin. Wateya wê çi ye ku meriv bernamenûsek baş e?

Kesê ku di bernameya nermalavê de xwedan hin ezmûn be, kodê nermalavê ku ji hêla kesên din ve hatî nivîsandin dadrês dike, û li gorî rêça karîyera xwe ve parametreyên darizandinê bikar tîne.

Di kariyera xweya pîşeyî de, min gelek pêşdebir nas kir, û min bi hezaran rêzikên kodê dît û dema ku ez hewce bikim ku jêhatîbûna pêşdebirvanek binirxînim ez bi giranî li du faktoran dinêrim:

  • Di xwendina kodê de sadebûn;
  • Çiqas îhtîmal heye ku koda wan bi demê re bixebite û pêşve biçe.

Bi kêfxweşî, hin bingehîn an prensîb hene ku hêsan dikin ku di kodkirinê de çêtir be.

kurteya SOLID tê vê wateyê:
S: prensîba berpirsiyariya yekta
O: prensîba vekirî-girtî
L: Prensîba şûna Liskov
I: Prensîpa dabeşkirina navrûyê
D: Prensîba Vegerîna Baweriyan

Werin em bi kûrkirina prensîba SOLID a yekem, ango ya

Prensîba Berpirsyariya Yekane

Divê çînek (an modûlek) tenê sedemek wê hebe ku biguhere, pêşve biçe.

Têgeh bixwe pir hêsan e, lê ji bo gihîştina vê hêsaniyê riya pêkanînê dikare pir tevlihev be. Divê çînek tenê sedemek wê hebe ku biguheze.

Lê çima? 

Çima ew qas girîng e ku tenê sedemek guhertinê hebe?

Mînakî, heke du sedemên cûda yên guherînê hebin, ew tê fikirîn ku du tîmên cûda dikarin ji ber du sedemên cûda li ser heman kodê bixebitin. Pêdivî ye ku her kes çareseriya xwe bicîh bîne, ku di rewşa zimanek berhevkirî de (wekî C ++, C # an Java), dikare bibe sedema modulên ku bi tîmên din an beşên din ên serîlêdanê re lihevnekirin.

Mînakek din, heke hûn zimanek şîrovekirî bikar tînin, dibe ku hûn ji ber sedemên cûda neçar bimînin ku heman pola an modulê ji nû ve biceribînin. Ev tê wateya kar, dem û hewldana bêtir ji bo kontrolkirina kalîteyê.

Naskirina taybetmendiya yeka ku divê çînek an modûlek hebe, ji lêgerîna li lîsteya kontrolê ya ku testan dimeşîne pir tevlihevtir e. 

Lê ka em ji nêrînek kêmtir teknîkî bifikirin, ango em hewl bidin ku bikarhênerê çîna an modula xwe, ya ku dê wê bikar bîne, analîz bikin. Aliyek bingehîn ku divê em hertim di hişê xwe de bigirin, ev e ku bikarhênerên serîlêdanê an pergala ku em pêşve dibin ên ku ji hêla modulek taybetî ve têne xizmet kirin dê yên ku guhertinên wê daxwaz dikin. Yên servekirî dê bixwazin ku pol an modulê biguherînin. 

Hin nimûneyên modûlan û karanîna wan:

  • Modûla parastinê: bikarhêner ji rêvebirên danegeh û avakarên nermalavê pêk tê.
  • Modula raporkirinê: bikarhêner ji karmendên ofîsê, hesabvan û hilberînê pêk tê.
  • Ji bo pergala rêveberiya meaşê modula hesabkirina drav: Bikarhêner dikarin parêzer, rêvebir û hesabvan jî tê de bin.
  • Ji bo pergala rêveberiya pirtûkxaneyê modûla lêgerîna nivîsê: bikarhêner dikarin ji hêla pirtûkxanê ve an ji hêla mêvan û xerîdarên pirtûkxaneyê bixwe ve werin nimînandin.

Ji ber vê yekê heke gava yekem lêgerîna lîstikvanan an lîstikvanê ku bi modulê re rola muxatabê heye, hevgirtina kesan bi hemî rolan re dijwar be. Di pargîdaniyek piçûk de, yek kes dikare gelek rol bilîze dema ku di pargîdaniyek mezin de dikare gelek kes hebin ku xwedan yek rol in. 

Ew ji bilî mirovan an bikarhêneran naskirina rolan, maqûltir xuya dike.

Ji ber vê yekê:

  • bikarhênerê pergala nermalavê sedemên guhertinê diyar dike;
  • berpirsiyarî malbatek fonksiyonan e ku hewcedariyên lîstikvanek taybetî, ango, bikarhênerê pergalê têr dike;
  • lîstikvan, bikarhêner ji bo malbata fonksiyonên ku divê hewcedariya bikarhêner têr bikin dibe çavkaniyek guherînê;
  • pêşkeftina hewcedariyên bikarhêner, rêberiya pêşveçûna karbidestiyê dike;

Prensîbên SOLID

Ka em çend mînakan bibînin

Bifikirin ku dersek me ya Pirtûkê heye ku têgîna pirtûkê û karbidestiya wê vedigire.

pola Pirtûk {

    fonksiyona getTitle () {

        vegerin "Pirtûkek Mezin";

    }

    fonksiyona getAuthor () {

        vegerin "Alessandro Baricco";

    }

    function nextpage () {

        // rûpela din

    }

    fonksiyona çapê Rûpelê Agahdarî () {

        echo "naveroka rûpelê niha";

    }

}

Ev çînek pir normal e. Pirtûkek me heye, û pol dikare sernavê me bide, ew dikarin nivîskarê me bidin, û ew dikarin pêşve biçin. Di dawiyê de, ew di heman demê de dikare çap bike ku rûpelê heyî li ser dîmenderê çap bike. 

Lêbelê, pirsgirêkek piçûk heye. 

Li ser aktorên ku di birêvebirina tiştê Pirtûkê de têkildar difikirin, ew kî ne? 

Em dikarin li vir bi hêsanî du aktorên cûda bifikirin: Birêvebirina pirtûkê (wek ku pirtûkxane) e Mekanîzmaya radestkirina daneyê (mîna çawa em dixwazin naverokê radestî bikarhêner bikin: li ser-ekran, navrûya bikarhênerê ya grafîkî, navnîşa bikarhêner-tenê-nivîs, dibe ku çap bike). 

Ji ber vê yekê du aktorên me yên cihêreng ên ku bi polê re têkilî danîne hene.

Bi kurtahî ev çîn di navbera:

  • mantiqa karsaziyê bi 
  • pêşkêşî 

ev dikare bibe pirsgirêkek ji ber ku ew prensîba berpirsiyariya yekane (SRP) binpê dike. 

Em çawa dikarin biguherin, em çawa dikarin vê kodê baştir bikin da ku rêzê li prensîba berpirsiyariya yekta bigirin?

Li koda jêrîn binêrin:

pola Pirtûk {

    fonksiyona getTitle () {

        vegerin "Oceano Mare";

    }

    fonksiyona getAuthor () {

        vegerin "Alessandro Baricco";

    }

    rûpelê fonksiyonê () {

        // rûpela din

    }

    fonksiyona getCurrentPage () {

        echo "naveroka rûpelê niha";

    }

}

Printer interface

    rûpelê fonksiyonê ($ rûpel);

}

pola StampaLibro Çapxaneyê bicîh tîne {

    Rûpelên fonksiyonê ($ rûpel) {

        echo $ rûpel;

    }

}

 

class HtmlPrinter Çapxaneyê bicîh dike {

    Rûpelên fonksiyonê ($ rûpel) {

        echo ' ' rûpel $. ' ';

    }

}

Vê nimûneya pir hêsan nîşan dide ka meriv çawa pêşkêşî ji mantiqa karsaziyê veqetîne, û li gorî SRP ew di nermbûna projeya me de avantajên mezin pêşkêşî dike.

Ka em li mînakek din binêrin:

Mînakek mîna ya li jor dema ku tiştek dikare xwe ji danasînê xilas bike û bistîne ye.

pola Pirtûk {

    fonksiyona getTitle () {

        vegerin "Oceano Mare";

    }

    fonksiyona getAuthor () {

        vegerin "Alessandro Baricco";

    }

    rûpelê fonksiyonê () {

        // rûpela din

    }

    fonksiyona getCurrentPage () {

        vegerin "naveroka rûpelê niha";

    }

    fonksiyonê xilas bike () {

        $ filename = '/ belge /'. $ ev-> getTitolo (). '-'. $ ev-> getAuthor ();

        file_put_contents ($ filename, serialize ($ ev));

    }

}

Mîna berê, li vir jî em dikarin aktorên cihêreng ên wekî nas bikin Birêvebirina pirtûkê (wek ku pirtûkxane) e Li sersekinî. Kengê ku em bixwazin awayê ku em ji rûpelê diçin rûpelê biguherînin, pêdivî ye ku em vê polê biguherînin. Em dikarin çend sedemên guherînê hebin.

pola Pirtûk {

    fonksiyona getTitle () {

        vegerin "Oceano Mare";

    }

    fonksiyona getAuthor () {

        vegerin "Alessandro Baricco";

    }

    rûpelê fonksiyonê () {

        // rûpela din

    }

    fonksiyona getCurrentPage () {

        vegerin "naveroka rûpelê niha";

    }

}

pola SimpleFilePersistence {

    fonksiyona xilas bike (Pirtûka $ pirtûkê) {

        $ filename = '/ belge /'. $ pirtûk-> getTitle (). '-'. $ pirtûk-> getAuthor ();

        file_put_contents ($ filename, serialize ($ book));

    }

}

Operasyona mayîndebûnê ber bi çînek din ve dê bi zelalî berpirsiyariyan ji hev veqetîne û em ê azad bin ku bêyî bandor li pola Pirtûka xwe rêbazên domdariyê li hevûdu bikin. Mînakî, bicîhkirina dersek DatabasePersistence dê bibandor be, û mantiqa karsaziya me ya ku li dora karûbarên pirtûkê hatî ava kirin naguhere.

Bi xwendina prensîba duyemîn Vekirî / Girtî -> bidomînin

Şîroveka 1

Şîroveyek bihêlin

Navnîşana e-nameya we nayê weşandin. Zeviyên mecbûrî têne nîşankirin *

prensîba liskov
perwerdeya
Prensîba stûna Lîskov, prensîba SOLID a sêyemîn

Pêdivî ye ku dersên zarokan tucarî li ser pênasên celebê yên çîna dêûbavan bandor neke an biguheze. Têgîna vê prensîbê ji hêla Barbara Liskov ve di kongreya sereke ya 1987 de hate destnîşan kirin û paşê di gotarek de bi Jannette Wing re di 1994 de hate weşandin. Danasîna wan a xwerû

meylên kirrûbirra google
perwerdeya
Meriv çawa Trendên Google-ê ji bo kirrûbirra rast-dem bikar tîne

Yek ji wan zehmetiyên mezin ên ku pargîdanî di sala 2020 de rûbirû man ev bû ku têgihiştin di kîjan sektorên hilberê de karsaziya xwe cûrbecûr bikin: bi rastî, piraniya sektorên pîşesaziyê êşên giran kişandine ku hema hema ne gengaz e ku pargîdanî di wan de bikevin, nemaze wekî lîstikvanek nû. Kêm sektorên hilberînê ...

stratejiya hişmendiya karsaziyê
Rêbaz
Stratejiyên ji bo gencestîxbarata Karsaziyê ya serketî

Avakirina stratejiyek serfiraz ji bo Intellistîxbarata Karsaziya we ji dîtinek rast a armancan dest pê dike. Em li jêr hin xalên bingehîn dibînin. Nirxandina rewşa heyî Dê kêmasiyek ji vî alî ve bibe xeletiyek mezin. Nirxandina rewşa heyî tê wateya analîzkirina pêvajoyan, pêkhateyan ...