10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Byen souvan mwen rankontre devlopè ki pa t tande pale de prensip SOLID yo (nou te pale sou yo an detay isit la. — Transl.) oswa pwogram oryante objè (OOP), oswa ou te tande pale de yo, men pa sèvi ak yo nan pratik. Atik sa a dekri benefis ki genyen nan prensip OOP ki ede pwomotè a nan travay li chak jou. Gen kèk nan yo byen li te ye, lòt moun pa tèlman, kidonk atik la pral itil pou tou de débutan ak pwogramasyon ki gen eksperyans.

Nou raple: pou tout lektè Habr - yon rabè 10 ruble lè w ap enskri nan nenpòt kou Skillbox lè l sèvi avèk kòd promo Habr la.

Skillbox rekòmande: Kou edikatif sou entènèt "Devlopè Java".

DRY (pa repete tèt ou)

Yon prensip jistis senp, sans nan ki klè nan non an: "Pa repete tèt ou." Pou yon pwogramè, sa vle di bezwen pou fè pou evite kopi kopi, osi byen ke opòtinite pou yo sèvi ak abstraksyon nan travay yo.

Si gen de seksyon repete nan kòd la, yo ta dwe konbine nan yon sèl metòd. Si yo itilize yon valè hardcoded plis pase yon fwa, li vo konvèti li nan yon konstan piblik.

Sa a se nesesè yo nan lòd yo senplifye kòd la epi fè li pi fasil kenbe, ki se objektif prensipal la nan OOP. Ou pa ta dwe twò itilize sendika a tou, paske menm kòd la pap pase verifikasyon ak OrderId ak SSN la.

Encapsulation Chanjman

Pwodwi lojisyèl pifò konpayi yo toujou ap en. Sa vle di ke chanjman yo bezwen fè nan kòd la, li bezwen sipòte. Ou ka fè lavi ou pi fasil lè w itilize enkapsulasyon. Sa a pral pèmèt ou pi efikasman teste epi kenbe baz kòd ki egziste deja. Isit la se yon egzanp.

Si ou ekri nan Java, lè sa a bay metòd prive ak varyab pa default.

Prensip louvri/fèmen

Ou ka sonje prensip sa a fasil lè w li deklarasyon sa a: "Antite lojisyèl (klas, modil, fonksyon, elatriye) ta dwe louvri pou ekstansyon, men fèmen pou modifikasyon." Nan pratik, sa vle di ke yo ka pèmèt yo chanje konpòtman yo san yo pa chanje kòd sous la.

Prensip la enpòtan lè chanjman nan kòd sous la mande pou revizyon kòd, tès inite, ak lòt pwosedi. Kòd ki swiv prensip la louvri/fèmen pa chanje lè pwolonje, kidonk gen anpil mwens pwoblèm ak li.

Men yon egzanp kòd ki vyole prensip sa a.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Si ou bezwen chanje yon bagay nan li, li pral pran anpil tan, depi tout seksyon nan kòd la ki gen yon koneksyon ak fragman an vle yo pral oblije chanje.

By wout la, ouvèti-fèmen se youn nan prensip yo nan SOLID.

Prensip Responsablite sèl (SRP)

Yon lòt prensip ki soti nan seri a SOLID. Li di ke "gen yon sèl kòz ki lakòz yon chanjman nan klas la." Klas la rezoud yon sèl pwoblèm. Li ka gen plizyè metòd, men chak nan yo itilize sèlman pou rezoud yon pwoblèm komen. Tout metòd ak pwopriyete yo ta dwe sèvi sèlman sa a.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Valè prensip sa a se ke li dekole kouple ki genyen ant eleman lojisyèl endividyèl la ak kòd la. Si ou ajoute plis pase yon fonksyon nan yon klas, li entwodui yon relasyon ant de fonksyon yo. Kidonk, si ou chanje youn nan yo, gen yon gwo chans pou depafini dezyèm lan, ki konekte ak premye a. Ak sa vle di ogmante sik tès yo nan lòd yo idantifye tout pwoblèm davans.

Prensip Envèsyon Depandans (DIP)

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Pi wo a se yon egzanp kòd kote AppManager depann sou EventLogWriter, ki an vire se byen makonnen ak AppManager. Si w bezwen yon fason diferan pou montre yon notifikasyon, kit se pouse, SMS oswa imèl, ou bezwen chanje klas AppManager la.

Pwoblèm nan ka rezoud lè l sèvi avèk DIP. Se konsa, olye pou yo AppManager, nou mande yon EventLogWriter, ki pral antre lè l sèvi avèk fondasyon an.

DIP fè li posib pou fasil ranplase modil endividyèl ak lòt moun lè w chanje modil depandans lan. Sa fè li posib pou chanje yon modil san yo pa afekte lòt yo.

Konpozisyon olye de eritaj

10 Prensip pwogram oryante objè chak devlopè ta dwe konnenGen de fason prensipal yo reitilize kòd: pòsyon tè ak konpozisyon, tou de nan yo ki gen pwòp avantaj ak dezavantaj yo. Anjeneral, dezyèm lan pi pito paske li pi fleksib.

Konpozisyon ba ou kapasite pou chanje konpòtman yon klas nan ègzekutabl lè w mete pwopriyete li yo. Lè w ap aplike koòdone, yo itilize polimorfis, ki bay yon aplikasyon ki pi fleksib.

Menm efikas Java pa Joshua Bloch konseye w ap chwazi konpozisyon pase eritaj.

Barbara Liskov Prensip Sibstitisyon (LSP)

Yon lòt prensip ki soti nan bwat zouti SOLID la. Li deklare ke subtip yo dwe ranplase sipètip la. Sa vle di, metòd ak fonksyon ki travay ak yon sipèklas ta dwe kapab travay san pwoblèm ak sousklas li yo.

LSP asosye ak prensip responsablite sèl la ak prensip responsablite pataje. Si yon klas bay plis fonksyonalite pase yon subklas, Lè sa a, lèt la pa pral sipòte kèk nan fonksyonalite a, vyole prensip sa a.

Isit la se yon moso kòd ki kontredi LSP.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Metòd zòn (Rektang r) kalkile sipèfisi yon Rektang. Pwogram nan pral aksidan apre egzekite Square paske Square se pa yon Rektang isit la. Dapre prensip LSP, fonksyon ki sèvi ak referans nan klas debaz yo ta dwe kapab sèvi ak objè nan klas ki sòti san enstriksyon adisyonèl.

Prensip sa a, ki se yon definisyon espesifik nan yon subtip, te pwopoze pa Barbara Liskov nan yon konferans konferans 1987 ki rele "Done Abstraksyon ak Hierachi," pakonsekan non li.

Prensip divize entèfas (ISP)

Yon lòt prensip SOLID. Dapre li, yon koòdone ki pa itilize pa ta dwe aplike. Swiv prensip sa a ede sistèm nan rete fleksib ak apwopriye pou refactoring lè chanjman yo te fè nan lojik fonksyone a.

Pi souvan, sitiyasyon sa a rive lè koòdone a gen plizyè fonksyon nan yon fwa, ak kliyan an bezwen sèlman youn nan yo.

Depi ekri yon koòdone se yon travay difisil, chanje li apre travay la fini san yo pa kraze anyen pral yon defi.

Avantaj nan prensip ISP nan Java se ke tout metòd yo dwe aplike an premye, epi sèlman Lè sa a, yo ka itilize pa klas yo. Se poutèt sa, prensip la fè li posib diminye kantite metòd.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Pwogramasyon pou koòdone a, pa aplikasyon an

Tout bagay isit la klè nan non an. Aplike prensip sa a mennen nan kreyasyon an nan kòd fleksib ki ka travay ak nenpòt nouvo aplikasyon nan koòdone la.

Ou ta dwe itilize kalite koòdone pou varyab, kalite retounen, oswa kalite agiman metòd. Yon egzanp se itilize SuperClass olye ke SubClass.

Sa vle di:

Lis nimewo = getNumbers();

Men pa:

ArrayList nimewo = getNumbers();

Isit la se yon aplikasyon pratik nan sa ki diskite pi wo a.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Prensip delegasyon

Yon egzanp komen se equals() ak hashCode() metòd nan Java. Lè li nesesè pou konpare de objè, aksyon sa a delege nan klas ki koresponn lan olye de yon sèl kliyan an.

Avantaj nan prensip la se ke pa gen okenn repetisyon nan kòd epi li se relativman senp chanje konpòtman. Li aplike tou pou delegasyon evènman an.

10 Prensip pwogram oryante objè chak devlopè ta dwe konnen

Tout prensip sa yo pèmèt ou ekri kòd pi fleksib, bèl ak serye ak jwenti segondè ak kouple ki ba. Natirèlman, teyori se yon bon bagay, men pou yon pwomotè aktyèlman sèvi ak konesans akeri a, pratik ki nesesè. Yon fwa ou fin metrize prensip OOP, pwochen etap ou a ta ka aprann modèl konsepsyon pou rezoud pwoblèm devlopman lojisyèl komen.

Skillbox rekòmande:

Sous: www.habr.com

Add nouvo kòmantè