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:
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
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:
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ê:
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:
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
Ercole Palmeri
Coveware ji hêla Veeam ve dê berdewam bike ku karûbarên bersivdayina bûyera xerckirina sîber peyda bike. Coveware dê kapasîteyên dadwerî û sererastkirinê pêşkêşî bike…
Lênêrîna pêşbînîkirî di sektora neft û gazê de, bi nêzîkatiyek nûjen û çalak a rêveberiya nebatê şoreşek dike.…
CMA ya Keyaniya Yekbûyî di derbarê reftarên Big Tech de di bazara îstîxbarata çêkirî de hişyariyek derxist. Va…
Biryarnameya "Xalên Kesk", ku ji hêla Yekîtiya Ewropî ve ji bo zêdekirina karbidestiya enerjiyê ya avahiyan hatî damezrandin, pêvajoya xwe ya qanûnî bi…