10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Spiss niltaqa' ma' żviluppaturi li ma semgħux bil-prinċipji SOLID (aħna tkellem dwarhom fid-dettall hawn. — Transl.) jew programmazzjoni orjentata lejn l-oġġetti (OOP), jew smajt bihom, iżda ma tużahomx fil-prattika. Dan l-artikolu jiddeskrivi l-benefiċċji tal-prinċipji OOP li jgħinu lill-iżviluppatur fix-xogħol tiegħu ta 'kuljum. Xi wħud minnhom huma magħrufa sew, oħrajn mhux daqshekk, għalhekk l-artikolu se jkun utli kemm għal dawk li jibdew kif ukoll għal programmaturi b'esperjenza.

Infakkrukom: għall-qarrejja kollha ta' Habr - skont ta' 10 rublu meta tirreġistra fi kwalunkwe kors ta' Skillbox billi tuża l-kodiċi promozzjonali Habr.

Skillbox jirrakkomanda: Kors edukattiv onlajn "Żviluppatur Java".

XOTT (Trepetix lilek innifsek)

Prinċipju pjuttost sempliċi, li l-essenza tiegħu hija ċara mill-isem: "Trepetix lilek innifsek." Għal programmatur, dan ifisser il-ħtieġa li jiġi evitat kodiċi duplikat, kif ukoll l-opportunità li tuża l-astrazzjoni fix-xogħol tagħhom.

Jekk hemm żewġ taqsimiet ripetuti fil-kodiċi, għandhom jingħaqdu f'metodu wieħed. Jekk valur hardcoded jintuża aktar minn darba, ta 'min jikkonvertih għal kostanti pubblika.

Dan huwa meħtieġ sabiex jiġi ssimplifikat il-kodiċi u jagħmilha aktar faċli biex jinżamm, li huwa l-għan ewlieni ta 'OOP. Lanqas m'għandekx tuża żżejjed l-unjoni, peress li l-istess kodiċi ma jgħaddix verifika kemm bl-OrderId kif ukoll bl-SSN.

Tibdil inkapsulanti

Il-biċċa l-kbira tal-prodotti tas-softwer tal-kumpaniji qed jevolvu kontinwament. Dan ifisser li jeħtieġ li jsiru bidliet fil-kodiċi, jeħtieġ li jkun appoġġjat. Tista 'tagħmel ħajtek aktar faċli billi tuża l-inkapsulament. Dan jippermettilek tittestja u żżomm il-bażi tal-kodiċi eżistenti tiegħek b'mod aktar effiċjenti. Hawn eżempju wieħed.

Jekk tikteb fil-Java, allura tassenja metodi u varjabbli privati ​​b'mod awtomatiku.

Prinċipju miftuħ/magħluq

Dan il-prinċipju jista’ jiftakar faċilment billi taqra d-dikjarazzjoni li ġejja: “L-entitajiet tas-softwer (klassijiet, moduli, funzjonijiet, eċċ.) għandhom ikunu miftuħa għall-estensjoni, iżda magħluqa għall-modifika.” Fil-prattika, dan ifisser li jistgħu jippermettu li l-imġieba tagħhom tinbidel mingħajr ma jinbidlu l-kodiċi tas-sors.

Il-prinċipju huwa importanti meta l-bidliet fil-kodiċi tas-sors jeħtieġu reviżjoni tal-kodiċi, ittestjar tal-unità, u proċeduri oħra. Kodiċi li jsegwi l-prinċipju miftuħ/magħluq ma jinbidilx meta jiġi estiż, għalhekk hemm ħafna inqas problemi miegħu.

Hawn eżempju ta 'kodiċi li jikser dan il-prinċipju.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Jekk għandek bżonn tibdel xi ħaġa fiha, se tieħu ħafna ħin, peress li t-taqsimiet kollha tal-kodiċi li għandhom konnessjoni mal-framment mixtieq se jkollhom jinbidlu.

Mill-mod, il-ftuħ-għeluq huwa wieħed mill-prinċipji ta 'SOLID.

Prinċipju Uniku ta' Responsabbiltà (SRP)

Prinċipju ieħor mis-sett SOLID. Jiddikjara li “hemm biss kawża waħda li tikkawża bidla fil-klassi.” Il-klassi ssolvi problema waħda biss. Jista 'jkollu diversi metodi, iżda kull wieħed minnhom jintuża biss biex issolvi problema komuni. Il-metodi u l-proprjetajiet kollha għandhom iservu biss għal dan.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Il-valur ta 'dan il-prinċipju huwa li jinħall l-akkoppjar bejn il-komponent tas-softwer individwali u l-kodiċi. Jekk iżżid aktar minn funzjonalità waħda għal klassi, tintroduċi relazzjoni bejn iż-żewġ funzjonijiet. Għalhekk, jekk tibdel waħda minnhom, hemm ċans kbir li tħassar it-tieni waħda, li hija konnessa mal-ewwel waħda. U dan ifisser li jiżdiedu ċ-ċikli tal-ittestjar sabiex jiġu identifikati l-problemi kollha minn qabel.

Prinċipju ta' Inverżjoni tad-Dipendenza (DIP)

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Выше приведен пример кода, где AppManager зависит от EventLogWriter, который, в свою очередь, тесно связан с AppManager. Если нужен иной способ показать уведомление, будь это пуш, SMS или email, нужно изменить класс AppManager.

Il-problema tista 'tiġi solvuta bl-użu ta' DIP. Allura, minflok AppManager, nitolbu EventLogWriter, li se jiddaħħal bl-użu tal-qafas.

DIP jagħmilha possibbli li faċilment jissostitwixxu moduli individwali ma 'oħrajn billi jinbidel il-modulu tad-dipendenza. Dan jagħmilha possibbli li jinbidel modulu wieħed mingħajr ma jaffettwa l-oħrajn.

Kompożizzjoni minflok wirt

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu JafОсновных способов повторного использования кода два — это наследование и композиция, причем у каждого есть как свои преимущества, так и недостатки. Обычно предпочтение отдается второму, поскольку он более гибкий.

Il-kompożizzjoni tagħtik il-ħila li tibdel l-imġieba ta 'klassi waqt ir-runtime billi tistabbilixxi l-proprjetajiet tagħha. Meta jiġu implimentati interfaces, jintuża polimorfiżmu, li jagħti implimentazzjoni aktar flessibbli.

Anke Effective Java minn Joshua Bloch jagħti parir li tagħżel il-kompożizzjoni fuq il-wirt.

Prinċipju ta' Sostituzzjoni ta' Barbara Liskov (LSP)

Prinċipju ieħor mill-għodda SOLID. Jiddikjara li s-sottotipi għandhom ikunu sostitwibbli għas-supertip. Jiġifieri, metodi u funzjonijiet li jaħdmu ma 'superklassi għandhom ikunu jistgħu jaħdmu mingħajr problemi bis-subklassijiet tagħha.

LSP huwa assoċjat kemm mal-prinċipju tar-responsabbiltà unika kif ukoll mal-prinċipju tar-responsabbiltà kondiviża. Jekk klassi tipprovdi aktar funzjonalità minn sottoklassi, allura din tal-aħħar ma tappoġġjax xi wħud mill-funzjonalità, u tikser dan il-prinċipju.

Hawnhekk hawn biċċa kodiċi li tikkontradixxi LSP.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Il-metodu taż-żona (Rettangolu r) jikkalkula l-erja ta 'Rettangolu. Il-programm se jikkraxxja wara li tesegwixxi Square għax Square mhix Rettangolu hawn. Skont il-prinċipju LSP, funzjonijiet li jużaw referenzi għal klassijiet bażi għandhom ikunu jistgħu jużaw oġġetti ta' klassijiet derivati ​​mingħajr struzzjonijiet addizzjonali.

Dan il-prinċipju, li huwa definizzjoni speċifika ta 'sottotip, ġie propost minn Barbara Liskov f'nota ewlenija tal-konferenza tal-1987 intitolata "Astrazzjoni tad-Data u Ġerarkija", għalhekk ismu.

Prinċipju tas-Separazzjoni tal-Interface (ISP)

Prinċipju ieħor SOLID. Skontha, interface li ma jintużax m'għandux jiġi implimentat. Li ssegwi dan il-prinċipju jgħin lis-sistema tibqa’ flessibbli u adattata għar-refactoring meta jsiru bidliet fil-loġika operattiva.

Ħafna drabi, din is-sitwazzjoni sseħħ meta l-interface fih diversi funzjonijiet f'daqqa, u l-klijent jeħtieġ wieħed biss minnhom.

Peress li l-kitba ta 'interface hija biċċa xogħol diffiċli, il-bidla wara li jitlesta x-xogħol mingħajr ma tkisser xejn se tkun sfida.

Il-vantaġġ tal-prinċipju tal-ISP f'Java huwa li l-metodi kollha għandhom jiġu implimentati l-ewwel, u mbagħad biss jistgħu jintużaw mill-klassijiet. Għalhekk, il-prinċipju jagħmilha possibbli li jitnaqqas in-numru ta 'metodi.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Programmazzjoni għall-interface, mhux l-implimentazzjoni

Kollox hawnhekk huwa ċar mill-isem. L-applikazzjoni ta 'dan il-prinċipju twassal għall-ħolqien ta' kodiċi flessibbli li jista 'jaħdem ma' kwalunkwe implimentazzjoni ġdida tal-interface.

Għandek tuża t-tip ta 'interface għal varjabbli, tipi ta' ritorn, jew it-tip ta 'argument tal-metodu. Eżempju huwa li tuża SuperClass aktar milli SubClass.

Jiġifieri:

Lista numri = getNumbers ();

Imma mhux:

ArrayList numri = getNumbers ();

Hawnhekk hawn implimentazzjoni prattika ta 'dak li huwa diskuss hawn fuq.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Prinċipju tad-delega

Eżempju komuni huwa l-metodi equals() u hashCode() f'Java. Meta jkun meħtieġ li jitqabblu żewġ oġġetti, din l-azzjoni tiġi delegata lill-klassi korrispondenti minflok lil dik tal-klijent.

Il-vantaġġ tal-prinċipju huwa li m'hemm l-ebda duplikazzjoni tal-kodiċi u huwa relattivament sempliċi li tinbidel l-imġiba. Japplika wkoll għad-delegazzjoni tal-avvenimenti.

10 Prinċipji ta' Programmazzjoni Orjentata lejn Oġġetti Kull Żviluppatur Għandu Jaf

Dawn il-prinċipji kollha jippermettulek tikteb kodiċi aktar flessibbli, sabiħ u affidabbli b'koeżjoni għolja u akkoppjar baxx. Naturalment, it-teorija hija tajba, iżda biex żviluppatur fil-fatt juża l-għarfien miksub, il-prattika hija meħtieġa. Ladarba inti tkun mhaddma l-prinċipji OOP, il-pass li jmiss tiegħek jista 'jkun li titgħallem mudelli ta' disinn biex issolvi problemi komuni ta 'żvilupp ta' softwer.

Skillbox jirrakkomanda:

Sors: www.habr.com

Żid kumment