10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Isikhathi esiningi ngihlangana nonjiniyela abangakaze bezwe ngezimiso ze-SOLID (we ukhulume ngazo kabanzi lapha. - Transl.) noma izinhlelo ezigxile ezintweni (OOP), noma uke wezwa ngazo, kodwa ungazisebenzisi ekwenzeni. Lesi sihloko sichaza izinzuzo zezimiso ze-OOP ezisiza unjiniyela emsebenzini wakhe wansuku zonke. Ezinye zazo ziyaziwa, ezinye azikho kangako, ngakho-ke lesi sihloko sizoba usizo kokubili abaqalayo nabahleli bezinhlelo abanolwazi.

Siyakukhumbuza: kubo bonke abafundi be-Habr - isaphulelo sama-ruble angu-10 lapho ubhalisa kunoma yisiphi isifundo se-Skillbox usebenzisa ikhodi yephromoshini ye-Habr.

I-Skillbox iyancoma: Isifundo se-inthanethi semfundo "Unjiniyela we-Java".

ZOMA (Ungaziphindaphindi)

Isimiso esilula, ingqikithi yaso ecacile egameni: "Ungaziphindi." Kumhleli, lokhu kusho isidingo sokugwema ikhodi eyimpinda, kanye nethuba lokusebenzisa i-abstract emsebenzini wabo.

Uma kunezigaba ezimbili eziphindaphindayo kukhodi, kufanele zihlanganiswe zibe indlela eyodwa. Uma inani lekhodi eqinile lisetshenziswa izikhathi ezingaphezu kwesisodwa, kufanelekile ukuliguqulela ekubeni lingaguquki esidlangalaleni.

Lokhu kuyadingeka ukuze kwenziwe lula ikhodi futhi kwenziwe kube lula ukuyigcina, okuwumgomo oyinhloko we-OOP. Akumele futhi usebenzise inyunyana ngokweqile, njengoba ikhodi efanayo ngeke iphumelele ukuqinisekiswa kukho kokubili i-OrderId ne-SSN.

Ukuhlanganisa Izinguquko

Imikhiqizo yesoftware yezinkampani eziningi ishintsha njalo. Lokhu kusho ukuthi izinguquko zidinga ukwenziwa kukhodi, idinga ukusekelwa. Ungenza impilo yakho ibe lula ngokusebenzisa i-encapsulation. Lokhu kuzokuvumela ukuthi uhlole ngokuphumelelayo futhi ugcine isisekelo sekhodi yakho ekhona. Nasi isibonelo esisodwa.

Uma ubhala ku-Java, ke nika izindlela eziyimfihlo neziguquguqukayo ngokuzenzakalelayo.

Umgomo ovuliwe/ovaliwe

Lesi simiso singakhunjulwa kalula ngokufunda isitatimende esilandelayo: β€œIzinkampani zesofthiwe (amakilasi, amamojula, imisebenzi, njll.) kufanele zivulelwe ukunwetshwa, kodwa zivaliwe ukuze zilungiswe.” Empeleni, lokhu kusho ukuthi bangavumela ukuziphatha kwabo ukuthi kushintshwe ngaphandle kokushintsha ikhodi yomthombo.

Umgomo ubalulekile uma izinguquko kukhodi yomthombo zidinga ukubuyekezwa kwekhodi, ukuhlolwa kweyunithi, nezinye izinqubo. Ikhodi elandela umgomo ovulekile/ovaliwe ayishintshi uma inwetshiwe, ngakho-ke kunezinkinga ezimbalwa ngayo.

Nasi isibonelo sekhodi ephula lesi simiso.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Uma udinga ukushintsha okuthile kuyo, kuzothatha isikhathi esiningi, ngoba zonke izigaba zekhodi ezinokuxhumana nesiqephu esifunayo kuzodingeka zishintshwe.

Ngendlela, ukuvuleka-ukuvala kungenye yezimiso ze-SOLID.

I-Single Responsibility Principle (SRP)

Esinye isimiso esivela kusethi ye-SOLID. Ithi β€œkunembangela eyodwa ebangela ushintsho ekilasini.” Ikilasi lixazulula inkinga eyodwa kuphela. Kungase kube nezindlela eziningana, kodwa ngayinye yazo isetshenziselwa ukuxazulula inkinga evamile. Zonke izindlela nezakhiwo kufanele zisebenze lokhu kuphela.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Inani lalesi simiso ukuthi likhulula ukuhlangana phakathi kwengxenye yesofthiwe ngayinye kanye nekhodi. Uma wengeza ukusebenza okungaphezu kokukodwa ekilasini, sethula ubudlelwano phakathi kwale misebenzi emibili. Ngakho-ke, uma ushintsha omunye wabo, kunethuba elikhulu lokucekela phansi okwesibili, okuxhunywe kweyokuqala. Futhi lokhu kusho ukwandisa imijikelezo yokuhlola ukuze kukhonjwe zonke izinkinga kusenesikhathi.

I-Dependency Inversion Principle (DIP)

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Ngenhla kunesibonelo sekhodi lapho i-AppManager incike ku-EventLogWriter, yona ehambisana eduze ne-AppManager. Uma udinga indlela ehlukile yokubonisa isaziso, kungaba i-push, i-SMS noma i-imeyili, udinga ukushintsha ikilasi le-AppManager.

Inkinga ingaxazululwa kusetshenziswa i-DIP. Ngakho, esikhundleni se-AppManager, sicela i-EventLogWriter, ezofakwa kusetshenziswa uhlaka.

I-DIP yenza kube lula ukushintsha amamojula ngamanye ngokushintsha imojula yokuncika. Lokhu kwenza kube nokwenzeka ukushintsha imojuli eyodwa ngaphandle kokuthikameze ezinye.

Ukuqanjwa esikhundleni sefa

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele AzaziKunezindlela ezimbili eziyinhloko zokusebenzisa kabusha ikhodi: ifa nokwakheka, kokubili okunobuhle nokubi. Imvamisa eyesibili iyakhethwa ngoba iguquguquka kakhulu.

Ukwakheka kukunikeza amandla okushintsha ukuziphatha kwekilasi ngesikhathi sokuqalisa ngokusetha izici zalo. Lapho kusetshenziswa ukuxhumana, kusetshenziswa i-polymorphism, enikeza ukuqaliswa okuvumelana nezimo.

Ngisho neJava Esebenzayo kaJoshua Bloch yeluleka ukukhetha ukwakheka esikhundleni sefa.

I-Barbara Liskov Substitution Principle (LSP)

Omunye umgomo ovela kukhithi yamathuluzi ye-SOLID. Ithi ama-subtypes kufanele athathelwe indawo ye-supertype. Okusho ukuthi, izindlela nemisebenzi esebenza ne-superclass kufanele ikwazi ukusebenza ngaphandle kwezinkinga ngezigaba zayo ezingaphansi.

I-LSP ihlotshaniswa nakho kokubili umgomo wokuzibophezela okukodwa kanye nomgomo wesibopho esabiwe. Uma ikilasi lihlinzeka ngokusebenza okwengeziwe kunesigaba esingaphansi, khona-ke lesi sakamuva ngeke sisekele okunye ukusebenza, okuphula lesi simiso.

Nali ucezu lwekhodi oluphikisana ne-LSP.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Indlela yendawo(Rectangle r) ibala indawo kanxande. Uhlelo luzophahlazeka ngemva kokusebenzisa isikwele ngoba isikwele asiwona unxande lapha. Ngokomgomo we-LSP, imisebenzi esebenzisa izinkomba zamakilasi ayisisekelo kufanele ikwazi ukusebenzisa izinto zamakilasi atholiwe ngaphandle kwemiyalo eyengeziwe.

Lesi simiso, esiyincazelo ethile yohlobo oluncane, sahlongozwa nguBarbara Liskov engqungqutheleni yango-1987 enesihloko esithi β€œData Abstraction and Hierarchy,” yingakho igama layo.

I-Interface Split Principle (ISP)

Esinye isimiso se-SOLID. Ngokusho kwayo, i-interface engasetshenziswanga akufanele isetshenziswe. Ukulandela lesi simiso kusiza isistimu ukuthi ihlale iguquguquka futhi ifanele ukwenziwa kabusha lapho izinguquko zenziwa kumqondo wokusebenza.

Imvamisa, lesi simo senzeka lapho isikhombimsebenzisi siqukethe imisebenzi eminingana ngasikhathi sinye, futhi iklayenti lidinga eyodwa kuphela yazo.

Njengoba ukubhala isikhombimsebenzisi kuwumsebenzi onzima, ukuwushintsha ngemva kokuba umsebenzi usuqediwe ngaphandle kokuphula noma yini kuyoba inselele.

Inzuzo yesimiso se-ISP ku-Java ukuthi zonke izindlela kufanele zisetshenziswe kuqala, futhi ngemva kwalokho zingasetshenziswa ngamakilasi. Ngakho-ke, isimiso senza kube nokwenzeka ukunciphisa inani lezindlela.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Ukuhlelela isixhumi esibonakalayo, hhayi ukuqaliswa

Konke lapha kucacile egameni. Ukusebenzisa lesi simiso kuholela ekwakhiweni kwekhodi evumelana nezimo engasebenza nanoma yikuphi ukuqaliswa okusha kwesixhumi esibonakalayo.

Kufanele usebenzise uhlobo lwesixhumi esibonakalayo kokuguquguqukayo, izinhlobo zokubuyisela, noma uhlobo lwe-agumenti yendlela. Isibonelo sisebenzisa i-SuperClass kune-SubClass.

Leyo:

Uhlu lwezinombolo= getNumbers();

Kodwa hhayi:

Izinombolo ze-ArrayList = getNumbers();

Nakhu ukuqaliswa okungokoqobo kwalokhu okukhulunywe ngakho ngenhla.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Umgomo wokudlulisa amandla

Isibonelo esivamile izindlela ezilinganayo () kanye ne-hashCode() ku-Java. Uma kudingekile ukuqhathanisa izinto ezimbili, lesi senzo sidluliselwa ekilasini elihambisanayo esikhundleni seklayenti elilodwa.

Inzuzo yalesi simiso ukuthi akukho ukuphindaphinda kwekhodi futhi kulula ukushintsha ukuziphatha. Isebenza nasekudlulisweni komcimbi.

10 Izimiso Zohlelo Olugxile Entweni Wonke Unjiniyela Okufanele Azazi

Zonke lezi zimiso zikuvumela ukuthi ubhale ikhodi eguquguqukayo, enhle futhi enokwethenjelwa ngokuhlangana okuphezulu nokuhlanganisa okuphansi. Yebo, ithiyori muhle, kodwa ukuze umthuthukisi asebenzise ulwazi alutholile, ukuzijwayeza kuyadingeka. Uma usufunde izimiso ze-OOP, isinyathelo sakho esilandelayo singaba ukufunda amaphethini wokuklama ukuze uxazulule izinkinga ezivamile zokuthuthukiswa kwesofthiwe.

I-Skillbox iyancoma:

Source: www.habr.com

Engeza amazwana