Articles

Vhura / Yakavharwa, zvinoenderana NESIMBA musimboti

Software masangano (makirasi, ma module, mashandiro, nezvimwewo) anofanirwa kuvhurwa kuti awedzerwe, asi akavharwa kuti agadzirise.

Kugadzira software: mamodule, makirasi uye mashandiro nenzira yekuti panodiwa mashandiro matsva, hatifanire kugadzirisa kodhi iripo asi kuti tinyore kodhi nyowani inoshandiswa nekodhi iripo. Izvi zvinganzwika sezvisinganzwisisike, kunyanya nemitauro yakaita seJava, C, C ++ kana C # uko painoshanda kwete chete kune iyo kodhi kodhi pachayo asiwo kune bhanari. Tinoda kugadzira maficha matsva munzira dzisingade kugoverwa patsva kwemabhinari aripo, anoita, kana maDLL.
OCP mune SOLID mamiriro

 

Inowirirana SRP uye OCP

Isu tatoona iyo SRP musimboti weSega Mutoro iyo inotaura kuti module inofanirwa kuve nechikonzero chimwe chete chekuchinja. Iwo maOCP uye SRP misimboti inoenderana. Iyo kodhi yakagadzirirwa kutevera iyo SRP musimboti icharemekedzawo OCP misimboti. Kana isu tine kodhi ine chikonzero chimwe chete chekuchinja, kuunza chinhu chitsva kunogadzira chikonzero chechipiri chekuchinja ikoko. Saka zvese SRP neOCP zvaizotyorwa. Zvimwechetezvo, kana isu tine kodhi iyo inongofanira kuchinja kana basa rayo guru rikachinja uye richifanira kuramba risingachinji kana mashandiro matsva achiwedzerwa, nekudaro tichiremekedza OCP, icharemekedza SRP zvakare.
Izvi hazvireve kuti SRP inogara ichitungamira kuOCP kana zvinopesana, asi muzviitiko zvakawanda kana mumwe wavo achitevedzwa, kuzadziswa kwechipiri kuri nyore.

 

Semuenzaniso wekutyora mutemo weOCP

Kubva pane yakasarudzika tekinoroji yekutarisa, iyo Vhura / Yakavharwa Nheyo iri nyore kwazvo. Hukama hwakareruka pakati pemakirasi maviri, senge iri pazasi, hunotyora mutemo weOCP

Kirasi yeMushandisi inoshandisa iyo Logic kirasi yakananga. Kana tichida kushandisa yechipiri Logic kirasi nenzira iyo inotibvumidza kushandisa zvese zvazvino uye zvitsva, iyo iripo Logic kirasi inoda kuchinjwa. Mushandisi akasungirirwa zvakananga mukuitwa kwepfungwa, hapana nzira yekuti isu tipe pfungwa idzva tisingakanganise iyo yazvino. Uye kana isu tichitaura nezvemitauro yakafananidzwa, Kirasi yeMushandisi ingangodaro inoda kuti zvigadziriswe zvakare. Kana isu tikataura nezvemitauro yakanyorwa, zvirokwazvo zvese Mushandisi anoitisa uye iyo Logic inoitisa kana raibhurari ine simba ichada kuripwa uye kuendesa, zviri nani kudzivirira pazvinogoneka.

Tichireva nezvechirongwa chakapfuura, tinogona kufunga kuti chero kirasi inonyatsoshandisa rimwe kirasi, inogona kutungamira mukutyorwa kweiyo Open / Yakavharwa musimboti. 
Ngatitii tinoda kunyora kirasi inokwanisa kupa kufambira mberi "muzana" yefaira rakadzingwa, kuburikidza neshoko redu. Tichava nezvikamu zviviri zvikuru, Progress neFaira, uye ndinofungidzira tinoda kuzvishandisa seinotevera:

 

basa bvunzoItCanGetTheProgressOfAFileAsAPercent () {
     $ file = nyowani File ();
     $ faira-> kureba = 200;
     $ faira-> yakatumirwa = 100;
     $ budiriro = Progress nyowani ($ faira);
     $ this-> assertEquals (50, $ budiriro-> getAsPercent ());
}

Mune ino kodhi isu tiri Vashandisi vebudiriro. Tinoda kuwana kukosha sepesenti, zvisinei nesaizi chaiyo yefaira. Isu tinoshandisa Faira sosi yekuziva. Faira rine hurefu mumabheti uye nemunda unonzi wakatumira unomiririra huwandu hwedata rakatumirwa kudownloader. Isu hatinei nekuti maitiro aya anovandudzwa sei mukushandisa. Tinogona kufunga kuti pane mamwe mashiripiti anoita izvi kwatiri, saka mukuyedza tinogona kuzviseta zvakajeka.

 

kirasi Faira {
     yeruzhinji $ kureba;
     yeruzhinji $ yakatumirwa;
}

 

Iyo File kirasi ingori yakapusa dhata chinhu chine iwo maviri minda. Ehezve iyo inofanirwawo kunge iine rumwe ruzivo uye maitiro, senge zita rezita, nzira, nzira inoenderana, dhairekitori razvino, mhando, mvumo, zvichingodaro.

 

Kufambira mberi kwekirasi {

     yakavanzika $ faira;

     basa __construct (Faira $ faira) {
          $ iyi-> faira = $ faira;
     }

     shanda getAsPercent () {
          dzosera $ iyi-> faira-> yakatumirwa * 100 / $ iyi-> faira-> kureba;
     }

}

Kufambira mberi ingori kirasi iyo inogamuchira faira mune mugadziri wayo. Kuti zvive pachena, isu tatsanangura iyo inoshanduka mhando mune yekuvaka parameter. Pane imwe chete nzira inobatsira paBudiriro, GetAsPercent (), iyo inotora yakatumirwa zviyero uye kureba kubva kuFaira vozvishandura kuita muzana. Zvakareruka uye zvinoshanda.

Iyi kodhi inoita kunge iri chokwadi, zvisinei iyo inotyora iyo yakavhurika / Yakavharwa musimboti.

Asi nei?

Uye sei?

 

Ngatiedzei kuchinja izvo zvinodiwa

Chishandiso chega chega chinoda maficha matsva kuti achinje nekufamba kwenguva. Chinhu chitsva chechishandiso chedu chinogona kunge chiri chekubvumira mimhanzi kutenderera panzvimbo yekungotora mafaira. Kureba kwefaira kunomiririrwa nemabheti, iyo nguva yemimhanzi mumasekondi. Tinoda kupa bha yekuenderera kune vateereri vedu, asi tinogona kushandisa zvakare kirasi yakanyorwa pamusoro?

Kwete isu hatigone. Kufambira mberi kwedu kunosungirwa kuFaira. Iyo inogona chete kubata faira ruzivo, kunyangwe iyo inogona zvakare kushandiswa kune zvemumhanzi zvemukati. Asi kuti tiite izvo isu tinofanirwa kuzvishandura, isu tinofanirwa kuita Progress kuti izive mimhanzi uye mafaera. Kana dhizaini yedu ikateerana neOCP, hatidi kubata File kana Progress. Isu tinogona kungoshandisa zvakare kufambira mberi kuripo nekuishandisa kumimhanzi.

 

Innovation newsletter
Usarasikirwa nenhau dzakanyanya kukosha dzekuvandudza. Nyora kuti uvagamuchire neemail.

Inogoneka mhinduro

Mitauro yakanyorwa zvine simba ine mukana wekugadzirisa mhando dzezvinhu panguva yekumhanya. Izvi zvinotibvumidza kubvisa iyo typehint kubva kune Progress muvaki uye iyo kodhi ichaenderera ichishanda.

Kufambira mberi kwekirasi {

     yakavanzika $ faira;

     basa __construct ($ faira) {
         $ iyi-> faira = $ faira;
     }

    shanda getAsPercent () {
         dzosera $ iyi-> faira-> yakatumirwa * 100 / $ iyi-> faira-> kureba;
     }

}

Isu tinogona ikozvino kuvhura chero chinhu kuProgress. Uye nechinhu chero chipi zvacho, ndinoreva chaizvo chero chinhu:

kirasi Mumhanzi {

yeruzhinji $ kureba;
yeruzhinji $ yakatumirwa;

yeruzhinji $ muimbi;
yeruzhinji $ album;
yeruzhinji $ releaseDate;

shanda getAlbumCoverFile () {
dzoka 'Mifananidzo / Inovhara /'. $ uyu-> muimbi. '/'. $ iyi-> dambarefu. '.png';
}
}

Uye iyo yeMusic kirasi senge iri pamusoro ichashanda zvakakwana. Tinogona kuyedza zviri nyore nemuedzo wakafanana neFaira.
basa bvunzoItCanGetTheProgressOfAMusicStreamAsAPercent () {
$ mumhanzi = Nyowani Mumhanzi ();
$ mumhanzi-> kureba = 200;
$ music-> yakatumirwa = 100;

$ budiriro = Progress nyowani ($ mumhanzi);

$ this-> assertEquals (50, $ budiriro-> getAsPercent ());
}

Saka chaizvo chero chinoyera zvemukati zvinogona kushandiswa nebudiriro kirasi. Zvimwe tinogona kuiisa mukodhi nekushandurawo zita rinoshanduka:

Kufambira mberi kwekirasi {

zvakavanzika $ inogona kuyerwaContent;

basa __construct ($ inogona kuyerwaContent) {
$ this-> kuyerwaContent = $ kuyerwaContent;
}

shanda getAsPercent () {
dzosera $ iyi-> inogona kuyerwaContent-> yakatumirwa * 100 / $ iyi-> inogona kuyerwaContent-> kureba;
}

}

Patakatsanangura Faira seye typehint, taive netariro nezve izvo zvinogona kuitirwa nekirasi yedu. Zvaive zvakajeka uye kana paine chero chinhu chakauya, chikanganiso chikuru akatiudza.

Una kirasi inodarika nzira yekirasi yepasi kuitira kuti base base kontrakiti isakudzwe nekirasi yakatorwa. 

Hatidi kupedzisira taedza kudaidza nzira kana kuwana minda pazvinhu zvisingaenderane nechibvumirano chedu. Pataive nechiratidzo, chibvumirano chakatsanangurwa nacho. Iyo minda uye nzira dzeFaira kirasi. Zvino sezvo isu tisina chinhu, isu tinogona kutumira chero chinhu, kunyangwe tambo uye zvaizoguma nekanganiso yakaipa.

Kunyange mhedzisiro yakafanana mune ese ari maviri, zvichireva kuti kodhi inotsemuka, yekutanga yakaburitsa meseji yakanaka. Izvi, zvisinei, zvakasviba zvikuru. Iko hakuna nzira yekuziva kuti shanduko chii - tambo mune yedu - uye kuti zvivakwa zvipi zvakatsvakwa uye zvikasawanikwa. Zvakaoma kugadzirisa uye kugadzirisa dambudziko. A programmer anofanira kuvhura Progress kirasi, kuiverenga nekuinzwisisa. Chibvumirano, munyaya iyi, kana iwe usinganyatso tsanangura typehint, ndeye defikuparara nemaitiro eBudiriro. Icho chibvumirano chinorehwa chinozivikanwa chete kuBudiriro. Mumuenzaniso wedu, ndizvo defiinopedzerwa nekuwana iyo minda miviri, yakatumirwa uye kureba, mune iyo getAsPercent() nzira. Muhupenyu chaihwo kondirakiti inorehwa inogona kuve yakaoma uye yakaoma kuwana nekungotsvaga mashoma mashoma mukirasi.

Mhinduro iyi inongokurudzirwa kana pasina imwe yemamwe matipi pazasi inogona kuitiswa zviri nyore kana kana ikakonzera shanduko dzakakomba dzekuvaka dzisingatenderi iko kuedza.

Ercole Palmeri

Innovation newsletter
Usarasikirwa nenhau dzakanyanya kukosha dzekuvandudza. Nyora kuti uvagamuchire neemail.

Zvinyorwa zvekare

Veeam inoratidzira yakanyatso tsigiro yerudzikinuro, kubva padziviriro kusvika pakupindura uye kupora

Coveware neVeeam icharamba ichipa cyber kubira chiitiko mhinduro masevhisi. Coveware ichapa forensics uye kugadzirisa kugona…

23 April 2024

Green uye Digital Revolution: Sei Predictive Maintenance iri Kushandura Oiri & Gasi Indasitiri

Kufanofungidzira kugadzirisa kuri kushandura chikamu cheoiri & gasi, nemaitiro matsva uye akasimba ekutarisira zvidyarwa.…

22 April 2024

UK antitrust regulator inosimudza BigTech alarm pamusoro peGenAI

Iyo UK CMA yakapa yambiro nezvemaitiro eBig Tech mumusika wehungwaru hwekugadzira. Ikoko…

18 April 2024

Casa Green: shanduko yesimba kune ramangwana rakagadzikana muItari

Chirevo che "Case Green", chakagadzirwa neEuropean Union kuti chiwedzere kushanda nesimba kwezvivakwa, chapedza hurongwa hwayo hwemutemo ne…

18 April 2024