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).
Ulgam dizaýn etaplary
- Programma üpjünçiligi ulgamy - umumy görnüşde programmany dizaýn etmek.
- 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.
- Kiçi ulgamlary synplara bölmek - ulgamyň böleklerini belli synplara we interfeýslere bölmek, şeýle hem olaryň arasyndaky täsirini kesgitlemek.
- 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.
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- 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).
- 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.
- Gaýtalama ýetmezçiligi - bulaşdyrýan goşmaça kod, ulgam dizaýnynyň pesliginiň alamaty we aýratyn ýere göçürilýär.
- 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.
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
Sapaklaryň 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:- jemgyýetçilik statiki yzygiderliligi;
- hususy statiki yzygiderlilik;
- şahsy mysal üýtgeýjileri.
Synp ölçegi
Indi synpyň ululygy barada gürleşmek isleýärin. SOLID ýö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
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ň bardygynyCar
we 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).
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
Üýtgeýjiler hakda azajyk pikirleneliň, has dogrusy, olary döretmegiň ýörelgeleriniň nämedigi hakda pikirleneliň:- Iň gowusy, üýtgeýjini ulanmazdan ozal yglan etmeli we başlamaly (ony döretmegiň we ýatdan çykarmagyň ýerine).
- Mümkin boldugyça üýtgeýänleri başlangyçdan soň üýtgemezligi üçin gutarnykly diýip yglan ediň.
- 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). - Konstruktorda üýtgeýänleri başlamaga synanyşmaly.
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.- Üýtgeýjileriň ömrüni mümkin boldugyça gysga ediň (üýtgeýjini döretmek bilen iň soňky giriş aralygy).
- Aýlawy öz içine alýan usulyň başynda däl-de, aýlawdan öň ulanylýan üýtgeýänleri başlaň.
- Elmydama iň çäkli çäkden başlaň we diňe zerur bolsa giňeldiň (üýtgeýjini mümkin boldugyça ýerli edip görkezmeli).
- Her üýtgeýjini diňe bir maksat üçin ulanyň.
- 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).
Usullar
Geliň, logikamyzyň durmuşa geçirilmegine, ýagny usullara gönüden-göni geçeliň.-
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.
-
if
Ikinji düzgün , buýruklardaky bloklarelse
wewhile
ş.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.
-
Üçü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.
-
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ň.
-
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ň.
-
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.
-
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.
-
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.
-
Parametrleri bir usula geçireniňizde, olaryň hemmesiniň ulanyljakdygyna göz ýetirmelisiňiz, ýogsam argument näme? Interfeýsden kesiň we hut şu.
-
try/catch
Tebigaty 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(); } }
GO TO FULL VERSION