10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Kazhinji ndinosangana nevagadziri vasina kunzwa nezveSOLID nheyo (isu akataura nezvavo zvizere pano. - Transl.) Ichi chinyorwa chinotsanangura mabhenefiti eOOP misimboti inobatsira mugadziri pabasa rake remazuva ese. Vamwe vavo vanozivikanwa, vamwe kwete zvakanyanya, saka chinyorwa chichave chakakosha kune vese vanotanga uye vane ruzivo programmers.

Tinoyeuchidza: kune vese vaverengi veHabr - a 10 ruble mutengo paunenge uchinyoresa mune chero Skillbox kosi uchishandisa iyo Habr yekusimudzira kodhi.

Skillbox inokurudzira: Dzidzo yepamhepo kosi "Java developer".

DRY (Usazvidzokorora)

Nheyo yakareruka, iyo hunhu hwakajeka kubva pazita: "Usazvidzokorora." Kune mugadziri wepurogiramu, izvi zvinoreva kudikanwa kwekudzivisa duplicate kodhi, pamwe nemukana wekushandisa abstraction mubasa ravo.

Kana paine zvikamu zviviri zvinodzokorora mukodhi, zvinofanirwa kusanganiswa kuita nzira imwe. Kana iyo hardcoded value ikashandiswa kanopfuura kamwe chete, zvakakodzera kuishandura kune yeruzhinji nguva dzose.

Izvi zvinodikanwa kuitira kurerutsa kodhi uye kuita kuti zvive nyore kuchengetedza, icho ndicho chinangwa chikuru cheOOP. Iwe haufanirwe kushandisa zvakanyanya mubatanidzwa, sezvo iyo kodhi imwe chete isingapfuure kuongororwa neOrderId neSSN.

Encapsulating Changes

Mazhinji emakambani 'software zvigadzirwa zvinogara zvichishanduka. Izvi zvinoreva kuti shanduko dzinoda kuitwa kune kodhi, inoda kutsigirwa. Iwe unogona kuita kuti hupenyu hwako huve nyore nekushandisa encapsulation. Izvi zvinokutendera kuti unyatso kuyedza uye kuchengetedza yako iripo kodhi base. Heuno muenzaniso mumwe.

Kana iwe ukanyora muJava, saka govera nzira dzakavanzika uye zvinosiyana nekusarudzika.

Yakavhurika/yakavharwa musimboti

Iyi nheyo inogona kurangarirwa nyore nyore nekuverenga chirevo chinotevera: "Zvinyorwa zveSoftware (makirasi, mamodule, mabasa, nezvimwewo) zvinofanirwa kuvhurwa kuti zviwedzere, asi zvakavharwa kuti zvigadziriswe." Mukuita, izvi zvinoreva kuti vanogona kubvumira maitiro avo kuti achinje pasina kushandura kodhi kodhi.

Nheyo yacho yakakosha kana shanduko kune kodhi kodhi inoda kudzokororwa kwekodhi, kuongororwa kweyuniti, uye mamwe maitiro. Kodhi inotevera yakavhurika / yakavharwa musimboti haichinji kana yawedzerwa, saka kune mashoma kure matambudziko nawo.

Heino muenzaniso wekodhi inotyora mutemo uyu.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Kana iwe uchida kushandura chimwe chinhu mairi, zvinotora nguva yakawanda, sezvo zvikamu zvose zvekodhi zvine hukama nechidimbu chinodiwa chichafanira kuchinjwa.

Nenzira, kuvhurika-kuvharwa ndeimwe yemisimboti yeSOLID.

Single Responsibility Principle (SRP)

Imwe nheyo kubva kuSOLID seti. Rinoti β€œkunongova nechisakiso chimwe chinokonzera chinjo mukirasi.” Kirasi inogadzirisa dambudziko rimwe chete. Inogona kunge iine nzira dzinoverengeka, asi imwe neimwe yadzo inoshandiswa chete kugadzirisa dambudziko rakajairika. Nzira dzese uye zvivakwa zvinofanirwa kushanda izvi chete.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Kukosha kweiyo musimboti ndeyekuti inosunungura kubatana pakati peiyo yega software chikamu uye kodhi. Kana iwe ukawedzera kanopfuura kamwechete kushanda kukirasi, inosuma hukama pakati peaya mabasa maviri. Nokudaro, kana ukashandura chimwe chazvo, pane mukana mukuru wekuparadza wechipiri, iyo yakabatanidzwa kune yekutanga. Uye izvi zvinoreva kuwedzera kuyedzwa kutenderera kuitira kuti uone matambudziko ese pamberi.

Dependency Inversion Principle (DIP)

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Pamusoro pane muenzaniso wekodhi apo AppManager inoenderana neChiitikoLogWriter, iyo inobatanidzwa zvakanyanya neAppManager. Kana iwe uchida imwe nzira yekuratidza chiziviso, ingave kusunda, SMS kana email, unofanirwa kushandura kirasi yeAppManager.

Dambudziko rinogona kugadziriswa uchishandisa DIP. Saka, pachinzvimbo cheAppManager, tinokumbira ChiitikoLogWriter, icho chinozoiswa uchishandisa chimiro.

DIP inoita kuti zvikwanise kutsiva nyore mamodule ega ega nevamwe nekushandura iyo dependency module. Izvi zvinoita kuti zvikwanise kushandura imwe module pasina kukanganisa mamwe.

Kuumbwa panzvimbo yenhaka

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira KuzivaPane nzira mbiri huru dzekushandisa zvakare kodhi: nhaka uye kuumbwa, zvese zvine zvazvakanakira nezvazvakaipira. Kazhinji yechipiri inofarirwa nekuti inochinjika.

Kuumbwa kunokupa iwe kugona kushandura maitiro ekirasi panguva yekumhanya nekuisa zvimiro zvayo. Paunenge uchiita mainterfaces, polymorphism inoshandiswa, inopa kuchinjika kuita.

Kunyangwe Inoshanda Java naJoshua Bloch inopa zano kusarudza kuumbwa pamusoro penhaka.

Barbara Liskov Substitution Principle (LSP)

Imwe nheyo kubva kuSOLID toolkit. Inotaura kuti subtypes inofanirwa kutsiva iyo supertype. Ndiko kuti, nzira uye mashandiro anoshanda ne superclass anofanira kukwanisa kushanda pasina matambudziko neayo makirasi.

LSP yakabatana nezvose zviri zviviri musimboti webasa rimwe uye musimboti webasa rakagovaniswa. Kana kirasi inopa kushanda kwakawanda kupfuura subclass, ipapo iyo yekupedzisira haizotsigire mamwe ekushanda, kutyora mutemo uyu.

Heino chidimbu chekodhi chinopokana neLSP.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Iyo nzvimbo (Rectangle r) nzira inoverengera nzvimbo yeRectangle. Iyo purogiramu ichaparara mushure mekuita Square nekuti Square haisi Rectangle pano. Zvinoenderana neiyo LSP musimboti, mabasa anoshandisa mareferensi kumakirasi ekutanga anofanirwa kukwanisa kushandisa zvinhu zvemakirasi akatorwa pasina mimwe mirairo.

Iyi musimboti, inova tsananguro yedikidiki, yakatsanangurwa naBarbara Liskov mumusangano we1987 keynote yakanzi "Data Abstraction uye Hierarchy," nekudaro zita rayo.

Interface Split Principle (ISP)

Imwe SOLID musimboti. Zvinoenderana nazvo, interface isingashandiswe haifanirwe kuitwa. Kutevedzera iyi musimboti kunobatsira sisitimu kuti irambe ichichinjika uye yakakodzera kudzokorodza kana shanduko dzaitwa kune inoshanda logic.

Kazhinji, mamiriro ezvinhu aya anoitika kana iyo interface ine akati wandei mabasa kamwechete, uye mutengi anoda rimwe chete rawo.

Sezvo kunyora interface ibasa rakaoma, kuishandura mushure mekunge basa rapera pasina kutyora chero chinhu kuchava dambudziko.

Kubatsira kweiyo ISP musimboti muJava ndeyekuti nzira dzese dzinofanirwa kutanga dzaitwa, uye chete ipapo dzinogona kushandiswa nemakirasi. Nokudaro, nheyo inoita kuti zvikwanise kuderedza nhamba yenzira.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Kuronga kweiyo interface, kwete kuita

Zvose pano zvakajeka kubva mumusoro. Kushandisa musimboti uyu kunotungamira mukusikwa kwekodhi inoshanduka iyo inogona kushanda nechero kutsva kwekuita kweiyo interface.

Iwe unofanirwa kushandisa iyo interface yemhando yezvakasiyana, mhando dzekudzoka, kana nzira yekupokana mhando. Muenzaniso uri kushandisa SuperClass kwete SubClass.

Ndiko kuti:

Nyora nhamba= getNumbers();

Asi kwete:

ArrayList nhamba = getNumbers();

Heino kushanda kunoshanda kwezviri kukurukurwa pamusoro apa.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Nheyo yekugovera

Muenzaniso wakajairika ndeye akaenzana () uye hashCode () nzira muJava. Kana zvichidikanwa kuenzanisa zvinhu zviviri, chiito ichi chinopihwa kukirasi inoenderana panzvimbo yemutengi.

Chakanakira musimboti ndechekuti hapana kudzokorora kodhi uye zviri nyore kuchinja maitiro. Izvo zvinoshandawo kune kutumwa kwechiitiko.

10 Object-Oriented Programming Misimboti Yese Mugadziri Anofanira Kuziva

Ese aya misimboti anobvumidza iwe kunyora zvakanyanya kuchinjika, yakanaka uye yakavimbika kodhi ine yakakwirira kubatana uye yakaderera coupling. Hongu, dzidziso yakanaka, asi kuti mugadziri anyatsoshandisa ruzivo rwawakawana, kudzidzira kunodiwa. Kana uchinge wagona misimboti yeOOP, nhanho yako inotevera inogona kunge iri yekudzidza mapatani ekugadzira kugadzirisa zvakajairika matambudziko ekugadzira software.

Skillbox inokurudzira:

Source: www.habr.com

Voeg