Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Nthawi zambiri ndimakumana ndi opanga omwe sanamvepo za mfundo za SOLID (ife analankhula za iwo mwatsatanetsatane apa. - Transl.) kapena mapulogalamu opangidwa ndi zinthu (OOP), kapena adamvapo za iwo, koma osawagwiritsa ntchito. Nkhaniyi ikufotokoza ubwino wa mfundo za OOP zomwe zimathandiza wopanga mapulogalamu pa ntchito yake ya tsiku ndi tsiku. Ena a iwo amadziwika bwino, ena osati kwambiri, kotero nkhaniyi idzakhala yothandiza kwa oyamba kumene komanso odziwa mapulogalamu.

Tikukukumbutsani: kwa owerenga onse a Habr - kuchotsera ma ruble 10 polembetsa maphunziro aliwonse a Skillbox pogwiritsa ntchito nambala yotsatsira ya Habr.

Skillbox imalimbikitsa: Maphunziro aulere pa intaneti "Wopanga Java".

DRY (Osadzibwereza Wekha)

Mfundo yosavuta, yomwe tanthauzo lake ndi lomveka bwino kuchokera ku dzina lakuti: "Osabwereza." Kwa wopanga mapulogalamu, izi zikutanthauza kufunikira kopewa ma code obwereza, komanso mwayi wogwiritsa ntchito zosokoneza pantchito yawo.

Ngati pali zigawo ziwiri zobwerezabwereza mu code, ziyenera kuphatikizidwa kukhala njira imodzi. Ngati mtengo wa hardcoded ugwiritsidwa ntchito kangapo, ndiyenera kusinthidwa kukhala nthawi zonse.

Izi ndizofunikira kuti muchepetse kachidindo ndikupangitsa kukhala kosavuta kusunga, chomwe ndicho cholinga chachikulu cha OOP. Simuyenera kugwiritsanso ntchito mgwirizanowu, chifukwa nambala yomweyi sichitha kutsimikiziridwa ndi OrderId ndi SSN.

Kusintha Zosintha

Zambiri zamapulogalamu amakampani zimasintha nthawi zonse. Izi zikutanthauza kuti zosintha ziyenera kupangidwa ku code, ziyenera kuthandizidwa. Mutha kupanga moyo wanu mosavuta pogwiritsa ntchito encapsulation. Izi zikuthandizani kuti muyese bwino ndikusunga ma code anu omwe alipo. Nachi chitsanzo chimodzi.

Ngati mulemba mu Java, ndiye perekani njira zapadera ndi zosintha mwachisawawa.

Mfundo yotsegula/yotsekedwa

Mfundo imeneyi ikhoza kukumbukiridwa mosavuta powerenga mawu otsatirawa: "Mabungwe a mapulogalamu (makalasi, ma modules, ntchito, ndi zina zotero) ayenera kutsegulidwa kuti awonjezere, koma otsekedwa kuti asinthe." Pochita izi, izi zikutanthauza kuti akhoza kulola kuti khalidwe lawo lisinthidwe popanda kusintha code source.

Mfundoyi ndiyofunikira pamene kusintha kwa code source kumafuna kukonzanso kachidindo, kuyesa ma unit, ndi njira zina. Khodi yomwe imatsatira mfundo yotseguka / yotsekedwa sisintha ikawonjezedwa, chifukwa chake imakhala ndi zovuta zochepa.

Nachi chitsanzo cha code yomwe imaphwanya mfundo iyi.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Ngati mukufuna kusintha chinachake mmenemo, zidzatenga nthawi yambiri, popeza zigawo zonse za code zomwe zimagwirizanitsa ndi chidutswa chomwe mukufuna zidzasinthidwa.

Mwa njira, kutseguka-kutsekedwa ndi imodzi mwa mfundo za SOLID.

Single Responsibility Principle (SRP)

Mfundo ina yochokera ku SOLID set. Limanena kuti β€œpali chinthu chimodzi chokha chimene chimachititsa kuti kalasi isinthe.” Kalasi imathetsa vuto limodzi lokha. Ikhoza kukhala ndi njira zingapo, koma iliyonse imagwiritsidwa ntchito kuthetsa vuto lodziwika bwino. Njira zonse ndi katundu ayenera kutumikira izi zokha.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Phindu la mfundoyi ndikuti imamasula kugwirizana pakati pa chigawo cha pulogalamu ya munthu ndi code. Ngati muwonjezera magwiridwe antchito ku kalasi, zimabweretsa ubale pakati pa magwiridwe antchito awiriwo. Choncho, ngati mutasintha mmodzi wa iwo, pali mwayi waukulu wowononga wachiwiri, womwe umagwirizanitsidwa ndi woyamba. Ndipo izi zikutanthauza kuonjezera maulendo oyesera kuti mudziwe mavuto onse pasadakhale.

Dependency Inversion Principle (DIP)

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Pamwambapa pali chitsanzo cha code pomwe AppManager imadalira EventLogWriter, yomwe imagwirizana kwambiri ndi AppManager. Ngati mukufuna njira ina yowonetsera zidziwitso, zikhale zokankhira, SMS kapena imelo, muyenera kusintha kalasi ya AppManager.

Vutoli litha kuthetsedwa pogwiritsa ntchito DIP. Chifukwa chake, m'malo mwa AppManager, tikupempha EventLogWriter, yomwe idzalowetsedwa pogwiritsa ntchito chimango.

DIP imapangitsa kuti zitheke kusintha ma modules amodzi ndi ena mosavuta posintha gawo lodalira. Izi zimapangitsa kusintha gawo limodzi popanda kukhudza ena.

Zolemba m'malo mwa cholowa

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera KudziwaPali njira ziwiri zazikulu zogwiritsiranso ntchito ma code: cholowa ndi kapangidwe kake, zonse zili ndi zabwino ndi zoyipa zake. Kawirikawiri yachiwiri imakondedwa chifukwa imakhala yosinthasintha.

Kuphatikizika kumakupatsani mwayi wosintha machitidwe a kalasi panthawi yothamanga pokhazikitsa mawonekedwe ake. Pokhazikitsa ma interfaces, polymorphism imagwiritsidwa ntchito, yomwe imapereka kukhazikitsa kosavuta.

Ngakhale Java Yogwira Ntchito yolemba Joshua Bloch imalangiza kusankha zolemba pa cholowa.

Barbara Liskov Substitution Principle (LSP)

Mfundo ina yochokera ku SOLID toolkit. Imati ma subtypes ayenera kukhala olowa m'malo mwa supertype. Ndiko kuti, njira ndi ntchito zomwe zimagwira ntchito ndi superclass ziyenera kugwira ntchito popanda mavuto ndi magawo ake.

LSP imalumikizidwa ndi mfundo zonse zaudindo umodzi komanso mfundo yogawana. Ngati kalasi ikupereka magwiridwe antchito kuposa gawo laling'ono, ndiye kuti omalizawo sangagwirizane ndi magwiridwe antchito, kuphwanya mfundo iyi.

Nayi chidutswa cha code chomwe chimatsutsana ndi LSP.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Njira ya dera (Rectangle r) imawerengera dera la Rectangle. Pulogalamuyo idzawonongeka pambuyo pochita Square chifukwa Square si Rectangle pano. Malinga ndi mfundo ya LSP, ntchito zomwe zimagwiritsa ntchito zolozera zamakalasi oyambira ziyenera kugwiritsa ntchito zinthu zamakalasi otengedwa popanda malangizo owonjezera.

Mfundo iyi, yomwe ndi tanthauzo laling'ono, idaperekedwa ndi Barbara Liskov pamsonkhano waukulu wa 1987 wotchedwa "Data Abstraction and Hierarchy," motero dzina lake.

Mfundo Yogawanitsa Chiyankhulo (ISP)

Mfundo ina ya SOLID. Malingana ndi izo, mawonekedwe omwe sagwiritsidwa ntchito sayenera kukhazikitsidwa. Kutsatira mfundoyi kumathandiza kuti dongosololi likhalebe losinthika komanso loyenera kukonzanso pamene kusintha kumapangidwa pamalingaliro ogwiritsira ntchito.

Nthawi zambiri, izi zimachitika pamene mawonekedwe ali ndi ntchito zingapo nthawi imodzi, ndipo kasitomala amafunikira imodzi yokha.

Popeza kulemba mawonekedwe ndi ntchito yovuta, kusintha pambuyo pomaliza ntchito popanda kuphwanya chilichonse kudzakhala kovuta.

Ubwino wa mfundo ya ISP ku Java ndikuti njira zonse ziyenera kukhazikitsidwa poyamba, ndipo pokhapo zitha kugwiritsidwa ntchito ndi makalasi. Choncho, mfundoyi imapangitsa kuti kuchepetsa chiwerengero cha njira.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Kukonzekera kwa mawonekedwe, osati kukhazikitsa

Chilichonse apa chikuwonekera bwino pamutuwu. Kugwiritsa ntchito mfundoyi kumapangitsa kuti pakhale ndondomeko yosinthika yomwe ingagwire ntchito ndi kukhazikitsa kwatsopano kwa mawonekedwe.

Muyenera kugwiritsa ntchito mawonekedwe amitundu yosiyanasiyana, mitundu yobwerera, kapena mtundu wa mkangano wa njira. Chitsanzo ndikugwiritsa ntchito SuperClass osati SubClass.

Ndiko kuti:

Mndandanda wa manambala= getNumbers();

Koma ayi:

Manambala a ArrayList = getNumbers ();

Pano pali kukhazikitsidwa kothandiza kwa zomwe zafotokozedwa pamwambapa.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Mfundo yogaΕ΅ira ena ntchito

Chitsanzo chofala ndi njira zofananira () ndi hashCode () mu Java. Pakafunika kufananiza zinthu ziwiri, izi zimaperekedwa kwa gulu lofananira m'malo mwa kasitomala.

Ubwino wa mfundoyi ndikuti palibe kubwereza kwa code ndipo ndikosavuta kusintha khalidwe. Zimagwiranso ntchito kwa oimira zochitika.

Mfundo 10 Zopangira Mapulogalamu Omwe Wopanga Mapulogalamu Ayenera Kudziwa

Mfundo zonsezi zimakulolani kuti mulembe code yosinthika, yokongola komanso yodalirika yokhala ndi mgwirizano wapamwamba komanso wochepa. Zachidziwikire, chiphunzitsocho ndi chabwino, koma kuti wopanga agwiritse ntchito chidziwitso chomwe wapeza, kuchita kumafunika. Mukadziwa bwino mfundo za OOP, chotsatira chanu chingakhale kuphunzira kamangidwe kake kuti muthane ndi zovuta zomwe zimachitika pakupanga mapulogalamu.

Skillbox imalimbikitsa:

Source: www.habr.com

Kuwonjezera ndemanga