JavaRush /Java Blog /Random-TK /Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bile...

Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemeklige çenli

Toparda çap edildi
Günüňiz haýyrly bolsun, bu gün size kod ýazmak barada dogry gürleşmek isleýärin. Ilki bilen programmirläp başlanymda, şuňa meňzeş ýazyp boljakdygyňyz hiç ýerde ýazylmady, eger şeýle ýazsaňyz, sizi taparyn we…. Netijede, kellämde köp sorag ýüze çykdy: nädip dogry ýazmaly, programmanyň şu ýa-da beýleki bölüminde haýsy ýörelgelere eýermeli we ş.m. Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 1Dogrusy, hemmeler derrew arassa kod ýaly kitaplara çümmek islemeýärler, sebäbi olarda köp zat ýazylýar, ýöne ilki bilen düşnükli. Okamagy tamamlasaňyz, kodlamak isleginiň hemmesini puja çykaryp bilersiňiz. Şonuň üçin ýokardakylara esaslanyp, bu gün size has ýokary derejeli kod ýazmak üçin kiçijik gollanma (kiçijik teklipler toplumy) bermek isleýärin. Bu makalada ulgam döretmek we interfeýsler, synplar we obýektler bilen işlemek bilen baglanyşykly esasy düzgünleri we düşünjeleri öwreneris. Bu materialy okamak size köp wagt almaz we umyt edýärin, ýadamaz. Topokardan aşak, ýagny programmanyň umumy gurluşyndan has anyk jikme-jikliklere geçerin. Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 2

Ulgam

Ulgamyň islenýän aýratynlyklary :
  • minimal çylşyrymlylyk - aşa çylşyrymly taslamalardan gaça durmaly. Esasy zat ýönekeýlik we aýdyňlyk (iň gowy = ýönekeý);
  • tehniki hyzmatyň aňsatlygy - programma döredilende, goldanmalydygyny ýadyňyzdan çykarmaly dälsiňiz (hatda ol bolmasaňyzam), şonuň üçin kod düşnükli we düşnükli bolmaly;
  • gowşak birikdirme programmanyň dürli bölekleriniň arasyndaky iň az baglanyşykdyr (OOP ýörelgelerini iň köp ulanmak);
  • gaýtadan ulanylmagy - böleklerini beýleki programmalarda gaýtadan ulanmak ukyby bolan ulgamy taslamak;
  • göterijilik - ulgam başga bir gurşa aňsatlyk bilen uýgunlaşmalydyr;
  • ýeke stil - dürli böleklerinde bir stilde ulgamy dizaýn etmek;
  • giňelmegi (göwrümliligi) - esasy gurluşyny bozmazdan ulgamy kämilleşdirmek (bir bölek goşsaňyz ýa-da üýtgetseňiz, galanlaryna täsir etmez).
Funksiýa goşmazdan, üýtgetmeleri talap etmeýän programma gurmak diýen ýaly mümkin däl. Beýni çagamyzyň döwür bilen yzarlamagy üçin hemişe täze elementleri girizmeli bolarys. Göwrümlilik ýüze çykýar . Göwrümliligi , esasanam programmany giňeltmek, täze funksiýa goşmak, has köp çeşme bilen işlemek (ýa-da başgaça aýdylanda has köp ýük). Newagny, täze logika goşmak has aňsat bolar ýaly, modullylygy ýokarlandyrmak arkaly ulgamyň birikdirilmegini azaltmak ýaly käbir düzgünlere boýun bolmalydyrys.

Ulgam dizaýn etaplary

  1. Programma üpjünçiligi ulgamy - umumy görnüşde programmany dizaýn etmek.
  2. Kiçi ulgamlara / paketlere bölünmek - logiki taýdan bölünýän bölekleri kesgitlemek we olaryň arasyndaky özara täsir düzgünlerini kesgitlemek.
  3. Kiçi ulgamlary synplara bölmek - ulgamyň böleklerini belli synplara we interfeýslere bölmek, şeýle hem olaryň arasyndaky täsirini kesgitlemek.
  4. Sapaklary usullara bölmek, bu synpyň wezipesine esaslanýan synp üçin zerur usullaryň doly kesgitlemesi. Usul dizaýny - aýratyn usullaryň işleýşini jikme-jik kesgitlemek.
Adatça dizaýn üçin ýönekeý işläp düzüjiler, ýokarda görkezilen zatlar üçin programma arhitektory jogapkärdir.

Ulgam dizaýnynyň esasy ýörelgeleri we düşünjeleri

Azyalta başlangyç sözlemi Bir programma, ulanylýança obýekt döretmek üçin wagt sarp etmeýär, bu başlangyç işini çaltlaşdyrýar we zibil ýygnaýjynyň ýüküni azaldýar. Thisöne munuň bilen gaty uzaga gitmeli däl, sebäbi bu modullygyň bozulmagyna sebäp bolup biler. Designhli dizaýn ädimlerini belli bir bölege, mysal üçin esasy ýa-da zawod ýaly işleýän synpa geçirmek peýdaly bolup biler . Gowy koduň taraplaryndan biri, ýygy-ýygydan gaýtalanýan, gazan kodunyň ýoklugydyr. Düzgün bolşy ýaly, şeýle kod öz wagtynda çagyrylyp bilner ýaly aýratyn klasa ýerleşdirilýär. AOP Aýry-aýrylykda, aspektli programmirleme barada aýdasym gelýär . Bu ahyrky logikany girizmek bilen programmirlemekdir, ýagny kod gaýtalamak synplara - aspektlere girizilýär we belli bir şertlere ýetilende çagyrylýar. Mysal üçin, belli bir at bilen bir usula gireniňizde ýa-da belli bir görnüşdäki üýtgeýjä gireniňizde. Käwagt taraplar bulaşyk bolup biler, sebäbi koduň nireden çagyrylýandygy entek belli däl, ýöne muňa garamazdan, bu örän peýdaly funksiýa. Hususan-da, keş keşde ýa-da hasaba alnanda: adaty sapaklara goşmaça logika goşmazdan bu funksiýany goşýarys. OAP hakda has giňişleýin maglumaty şu ýerden okap bilersiňiz . Kent Bekiň pikiriçe ýönekeý arhitekturany dizaýn etmegiň 4 düzgüni
  1. Düşünjeli bolmak - synpyň aýdyň beýan edilen maksadyna zerurlyk, dogry at bermek, kiçi göwrüm we ýeke-täk jogapkärçilik ýörelgesine eýermek arkaly gazanylýar (aşakda has jikme-jik serederis).
  2. Iň azyndan sapaklar we usullar - sapaklary mümkin boldugyça kiçi we bir taraplaýyn bölmek islegiňizde, gaty uzaklaşyp bilersiňiz (antipattern - ýarag). Bu ýörelge ulgamy ykjam saklamagy we gaty uzak gitmezligi, her bir asgyrmak üçin synp döretmegi talap edýär.
  3. Gaýtalama ýetmezçiligi - bulaşdyrýan goşmaça kod, ulgam dizaýnynyň pesliginiň alamaty we aýratyn ýere göçürilýär.
  4. Testshli synaglaryň ýerine ýetirilmegi - ähli synaglardan geçen ulgam gözegçilik astynda saklanýar, sebäbi islendik üýtgeşiklik synaglaryň şowsuz bolmagyna sebäp bolup biler, bu usulyň içerki logikasynyň üýtgemeginiň garaşylýan özüni alyp barşyň üýtgemegine sebäp bolup biljekdigini görkezip biler.
SOLID Ulgam düzülende SOLID-iň belli ýörelgelerini göz öňünde tutmaly: S - ýeke jogapkärçilik - ýeke jogapkärçilik ýörelgesi; O - açyk ýapyk - açyklyk / ýakynlyk ýörelgesi; L - Liskowyň ornuny tutmak - Barbara Liskowyň ornuny tutmak; I - interfeýs bölünişi - interfeýsi bölmek prinsipi; D - garaşlylygyň tersligi - garaşlylygyň tersligi; Her prinsip barada aýratyn durup geçmeris (bu makalanyň çäginden birneme daş, ýöne şu ýerde has giňişleýin maglumat alyp bilersiňiz

Interfeýs

Perhapshtimal, ýeterlik synpy döretmegiň iň möhüm tapgyrlaryndan biri, synpyň durmuşa geçiriş jikme-jikliklerini gizleýän gowy abstraksiýany görkezýän we şol bir wagtyň özünde biri-birine aç-açan gabat gelýän usullar toparyny görkezjek ýeterlik interfeýs döretmekdir. . SOLID ýörelgeleriniň birine - interfeýsiň bölünmegine has içgin seredeliň : müşderiler (synplar) ulanmajak zerur däl usullaryny durmuşa geçirmeli däldirler. Thisagny, bu interfeýsiň ýeke-täk wezipesini ýerine ýetirmäge gönükdirilen iň az sanly usul bilen interfeýs gurmak barada aýdýan bolsak (meniň pikirimçe, bu ýeke-täk jogapkärçilige gaty meňzeýär ), bir-iki sanysyny döretmek has gowudyr. bir çişirilen interfeýsiň ýerine. Bagtymyza, synp mirasda bolşy ýaly birden köp interfeýsi durmuşa geçirip biler. Şeýle hem interfeýsleriň dogry atlandyrylmagy barada ýadyňyzdan çykarmaly dälsiňiz: at öz wezipesini mümkin boldugyça takyk görkezmelidir. Elbetde, näçe gysga bolsa, şonça-da bulaşyklyk döreder. Resminamalar üçin teswirler adatça interfeýs derejesinde ýazylýar , bu bolsa öz gezeginde usulyň näme etmelidigini, haýsy argumentleri talap edýändigini we yzyna gaýdyp geljekdigini jikme-jik düşündirmäge kömek edýär.

Synp

Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 3Sapaklaryň içerki guramasyna seredeliň. Has dogrusy, sapaklar gurlanda berjaý edilmeli käbir pikirler we düzgünler. Adatça, synp belli bir tertipde düzülen üýtgeýänleriň sanawy bilen başlamaly:
  1. jemgyýetçilik statiki yzygiderliligi;
  2. hususy statiki yzygiderlilik;
  3. şahsy mysal üýtgeýjileri.
Ondan soň az argumentlere çenli dürli konstruktorlar bar. Olardan has ýapyk görnüşlere has açyk giriş usullary bar: adatça, çäklendirmek isleýän käbir funksiýalarymyzyň ýerine ýetirilişini gizleýän hususy usullar iň aşagyndadyr.

Synp ölçegi

Indi synpyň ululygy barada gürleşmek isleýärin. Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 4SOLID ýörelgelerinden birini - ýekeje jogapkärçiligi ýada salalyň . Responsibilityeke-täk jogapkärçilik - ýeke-täk jogapkärçilik ýörelgesi. Her bir obýektiň diňe bir maksadynyň (jogapkärçiliginiň) bardygyny we ähli usullarynyň logikasynyň ony üpjün etmäge gönükdirilendigini aýdýar. Thisagny, şundan ugur alyp, uly, çişirilen synplardan gaça durmalydyrys (tebigaty boýunça antipattern - “ylahy jisim”) we synpda dürli-dürli, birmeňzeş logikanyň köp usuly bar bolsa, pikirlenmeli; iki logiki bölege (synplara) bölmek barada. Bu bolsa öz gezeginde koduň okalmagyny ýokarlandyrar, sebäbi belli bir synpyň takmynan maksadyny bilýän bolsak, usulyň maksadyna düşünmek üçin köp wagt gerek däl. Şeýle hem synpyň adyna göz aýlamaly : içindäki logikany görkezmeli. Aýdaly, 20+ sözli synpymyz bar bolsa, gaýtadan işlemek hakda pikirlenmeli. Her bir öz-özüne hormat goýýan synpda beýle köp mukdarda içerki üýtgeýjiler bolmaly däldir. Aslynda, her usul olaryň biri ýa-da birnäçesi bilen işleýär, bu bolsa synpyň içinde has uly birleşmä sebäp bolýar (edil şonuň ýaly bolmaly, sebäbi synp bir bitewi bolmaly). Netijede, synpyň sazlaşygyny ýokarlandyrmak, munuň ýaly azalmagyna getirýär we elbetde synplarymyzyň sany köpelýär. Käbirleri üçin bu bizar edýär, belli bir uly meseläniň nähili işleýändigini görmek üçin has köp klasa gitmeli. Beýleki zatlaryň arasynda, her synp beýlekiler bilen minimal baglanyşykda bolmaly kiçijik moduldyr. Bu izolýasiýa, synpa goşmaça logika goşanymyzda etmeli üýtgeşmelerimiziň sanyny azaldar.

Obýektler

Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 5

Enkapsulýasiýa

Bu ýerde ilki bilen OOP ýörelgeleriniň biri - encapsulýasiýa barada gürleşeris . Şeýlelik bilen, durmuşa geçirmegi gizlemek üýtgeýjileriň arasynda usul gatlagyny döretmek bilen çäklenmeýär (ýeke-täk usullar, girişler we sazlaýjylar arkaly girişi oýlanyşyksyz çäklendirýär, bu gowy däl, sebäbi ähli bukjanyň nokady ýitýär). Elýeterliligi gizlemek abstraksiýalary döretmäge gönükdirilendir, ýagny synp maglumatlarymyz bilen işleýän umumy anyk usullary üpjün edýär. Emma ulanyjynyň bu maglumatlar bilen nähili işleýändigimizi anyk bilmegi zerur däl - bu işleýär we bu gowy.

Demeter kanuny

Şeýle hem Demeter kanunyny göz öňünde tutup bilersiňiz: synpda we usul derejesinde çylşyrymlylygy dolandyrmaga kömek edýän kiçijik düzgünler toplumy. Şeýlelik bilen, obýektimiziň bardygyny Carwe onuň usulynyň bardygyny kabul edeliň - move(Object arg1, Object arg2). Demeter kanunyna görä, bu usul diňe jaň etmek bilen çäklenýär:
  • obýektiň özi Car(başgaça aýdylanda, bu);
  • döredilen obýektleriň usullary move;
  • argument hökmünde geçen obýektleriň usullary - arg1, arg2;
  • içerki obýektleriň usullary Car(edil şonuň ýaly).
Başgaça aýdylanda, Demeteriň kanuny çagalaryň düzgüni ýaly bir zat - dostlaryňyz bilen gürleşip bilersiňiz, ýöne nätanyş adamlar bilen gürleşip bilersiňiz .

Maglumatlaryň gurluşy

Maglumat gurluşy baglanyşykly elementleriň ýygyndysydyr. Obýekti maglumat gurluşy hökmünde göz öňünde tutanyňyzda, usullar bilen işlenýän, barlygy aç-açan göz öňünde tutulýan maglumatlar elementleriniň toplumydyr. .Agny, maksady saklanylýan maglumatlary saklamak we işlemek (işlemek) maksady bolan obýektdir. Adaty bir obýektden esasy tapawut, obýektiň barlygy göz öňünde tutulýan maglumatlar elementlerinde işleýän usullaryň toplumydyr. Düşündiňmi? Adaty bir obýektde esasy tarap usullardyr we içerki üýtgeýjiler dogry işlemegine gönükdirilendir, emma maglumatlar gurluşynda başga ýol bar: usullar bu ýerde esasy bolan saklanýan elementler bilen işlemäge kömek edýär we kömek edýär. Maglumat gurluşynyň bir görnüşi Maglumat geçirmek obýekti (DTO) . Bu köpçülikleýin üýtgeýjiler bilen synpdyr we maglumatlar bazalary bilen işleýän, rozetkalardan habarlary derňemek we ş.m. maglumatlary geçirýän hiç hili usul ýok (ýa-da diňe okamak / ýazmak usullary), adatça, şular ýaly obýektlerdäki maglumatlar uzak wagtlap saklanmaýar we şeýle derrew diýen ýaly programmamyzyň işleýän guramasyna öwrüldi. Gurama, öz gezeginde, maglumat gurluşydyr, ýöne onuň maksady programmanyň dürli derejelerinde iş logikasyna gatnaşmak, DTO bolsa programma / maglumatlara maglumat daşamak. Mysal DTO:
@Setter
@Getter
@NoArgsConstructor
public class UserDto {
    private long id;
    private String firstName;
    private String lastName;
    private String email;
    private String password;
}
Hemme zat düşnükli ýaly, ýöne bu ýerde gibridleriň bardygyny öwrenýäris. Gibridler möhüm logikany dolandyrmak we içerki elementleri saklamak we olara giriş usullaryny (almak / düzmek) usullary öz içine alýan obýektlerdir. Şeýle zatlar bulaşyk we täze usullary goşmagy kynlaşdyrýar. Olary ulanmaly dälsiňiz, sebäbi olaryň näme üçin niýetlenendigi belli däl - elementleri saklamak ýa-da haýsydyr bir logika ýerine ýetirmek. Obýektleriň mümkin bolan görnüşleri barada şu ýerden okap bilersiňiz .

Üýtgeýjileri döretmegiň esaslary

Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 6Üýtgeýjiler hakda azajyk pikirleneliň, has dogrusy, olary döretmegiň ýörelgeleriniň nämedigi hakda pikirleneliň:
  1. Iň gowusy, üýtgeýjini ulanmazdan ozal yglan etmeli we başlamaly (ony döretmegiň we ýatdan çykarmagyň ýerine).
  2. Mümkin boldugyça üýtgeýänleri başlangyçdan soň üýtgemezligi üçin gutarnykly diýip yglan ediň.
  3. Hasaplaýjy üýtgeýjileri ýatdan çykarmaň (köplenç olary haýsydyr bir aýlawda ulanýarys for, ýagny täzeden düzmegi ýatdan çykarmaly däldiris, ýogsam bu tutuş logikamyzy bozup biler).
  4. Konstruktorda üýtgeýänleri başlamaga synanyşmaly.
  5. new SomeObject()Eger ( ) salgylanmasyz ýa-da ulanmazdan bir obýekti ulanmagyň arasynda saýlama bar bolsa , () ulanman saýlaň , sebäbi bir gezek ulanylan bu obýekt indiki zibil ýygnamak wagtynda ýok ediler we serişdeleri ýitirmez.
  6. Üýtgeýjileriň ömrüni mümkin boldugyça gysga ediň (üýtgeýjini döretmek bilen iň soňky giriş aralygy).
  7. Aýlawy öz içine alýan usulyň başynda däl-de, aýlawdan öň ulanylýan üýtgeýänleri başlaň.
  8. Elmydama iň çäkli çäkden başlaň we diňe zerur bolsa giňeldiň (üýtgeýjini mümkin boldugyça ýerli edip görkezmeli).
  9. Her üýtgeýjini diňe bir maksat üçin ulanyň.
  10. Gizlin manyly üýtgeýjilerden gaça duruň (üýtgeýji iki meseläniň arasynda bölünýär, bu görnüşi olaryň birini çözmek üçin laýyk däl diýmekdir).
Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 7

Usullar

Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 8Geliň, logikamyzyň durmuşa geçirilmegine, ýagny usullara gönüden-göni geçeliň.
  1. Birinji düzgün ykjamlyk. Iň gowusy, bir usul 20 setirden geçmeli däldir, şonuň üçin köpçülige açyk bir usul “çişse”, bölünen logikany hususy usullara geçirmek hakda pikirlenmeli.

  2. ifIkinji düzgün , buýruklardaky bloklar elsewe whileş.m. ýokary derejede ýerleşdirilmeli däldir: bu koduň okalmagyny ep-esli azaldar. Iň gowusy, höwürtge iki blokdan köp bolmaly däldir {}.

    Şeýle hem bu bloklardaky kody ykjam we ýönekeý etmek maslahat berilýär.

  3. Üçünji düzgün, usulyň diňe bir amaly ýerine ýetirmegi. .Agny, bir usul çylşyrymly, dürli logikany ýerine ýetirýän bolsa, ony submetodlara bölýäris. Netijede, usulyň özi fasad bolar, maksady beýleki amallary dogry tertipde çagyrmak.

    Aöne aýratyn usul döretmek üçin amal gaty ýönekeý görünse näme etmeli? Hawa, käwagt topdan çemçe atýan ýaly bolup biler, ýöne ownuk usullar birnäçe peýdany üpjün edýär:

    • kod okamak has aňsat;
    • usullar ösüşiň dowamynda has çylşyrymlaşýar we bu usul ilki ýönekeý bolsa, işleýşini çylşyrymlaşdyrmak birneme aňsat bolar;
    • durmuşa geçiriş jikme-jikliklerini gizlemek;
    • kody gaýtadan ulanmagy ýeňilleşdirmek;
    • has ýokary kod ygtybarlylygy.
  4. Aşakdaky düzgün , kody ýokardan aşak okamaly: aşaky, logikanyň çuňlugy we tersine, usullar näçe ýokary bolsa, şonça-da abstrakt. Mysal üçin, kommutator buýruklary gaty ykjam we islenmeýän, ýöne wyklýuçatel ulanman edip bilmeýän bolsaňyz, mümkin boldugyça pes derejä, iň pes usullara geçirmäge synanyşyň.

  5. Usul argumentleri - näçesi ideal? Iň gowusy, asla ýok)) thatöne bu hakykatdanam bolup geçýärmi? Şeýle-de bolsa, olaryň mümkin boldugyça az bolmagyna synanyşmaly, sebäbi näçe az bolsa, bu usuly ulanmak aňsat we synagdan geçirmek aňsat. Şübheli bolsaňyz, köp sanly giriş argumentleri bilen usuly ulanmak üçin ähli ssenariýalary çaklamaga synanyşyň.

  6. Aýry-aýrylykda, giriş argumenti hökmünde öwüşginli baýdagy bolan usullary bellemek isleýärin , sebäbi bu usulyň birden köp amaly ýerine ýetirýändigini aňladýar (eger dogry bolsa, biri ýalňyş, beýlekisi). Aboveokarda ýazyşym ýaly, bu gowy däl we mümkin bolsa öňüni almaly.

  7. Bir usulda köp sanly gelýän argument bar bolsa (iň ýokary bahasy 7, ýöne 2-3-den soň bu barada pikirlenmeli), käbir argumentleri aýratyn obýektde toparlamaly.

  8. Birnäçe meňzeş usul bar bolsa (artykmaç ýüklenen) , şuňa meňzeş parametrler şol bir tertipde geçmeli: bu okalmagy we ulanylyşy ýokarlandyrýar.

  9. Parametrleri bir usula geçireniňizde, olaryň hemmesiniň ulanyljakdygyna göz ýetirmelisiňiz, ýogsam argument näme? Interfeýsden kesiň we hut şu.

  10. try/catchTebigaty boýunça gaty bir gowy görünmeýär, şonuň üçin ony aralyk aýratyn usula (kadadan çykmalary çözmegiň usuly) geçirmek gowy zat:

    public void exceptionHandling(SomeObject obj) {
        try {
            someMethod(obj);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Aboveokardaky kody gaýtalamak hakda aýtdym, ýöne şu ýere goşaryn: Kodyň böleklerini gaýtalamak bilen birnäçe usulymyz bar bolsa, ony aýratyn usula geçirmeli, bu usulyň hem ykjamlygyny ýokarlandyrar. synp. Dogry atlary ýatdan çykarmaň. Makalanyň indiki bölüminde synplaryň, interfeýsleriň, usullaryň we üýtgeýänleriň dogry atlandyrylmagynyň jikme-jikliklerini size aýdyp bereýin. Ine, şu gün meniň üçin bar zat. Kod ýazmagyň düzgünleri: ulgam döretmekden obýektler bilen işlemek - 9Kod düzgünleri: dogry atlandyrmagyň güýji, gowy we erbet teswirler
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION