10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Nigbagbogbo Mo pade awọn idagbasoke ti ko gbọ ti awọn ipilẹ SOLID (awa ti sọrọ nipa wọn ni apejuwe awọn nibi. - Transl.) tabi siseto-Oorun-ohun (OOP), tabi ti gbọ ti wọn, ṣugbọn maṣe lo wọn ni iṣe. Nkan yii ṣapejuwe awọn anfani ti awọn ipilẹ OOP ti o ṣe iranlọwọ fun idagbasoke ni iṣẹ ojoojumọ rẹ. Diẹ ninu wọn jẹ olokiki daradara, awọn miiran kii ṣe pupọ, nitorinaa nkan naa yoo wulo fun awọn olubere mejeeji ati awọn olupilẹṣẹ ti o ni iriri.

A leti: fun gbogbo awọn oluka Habr - ẹdinwo 10 ruble nigbati o forukọsilẹ ni eyikeyi iṣẹ-ẹkọ Skillbox nipa lilo koodu ipolowo Habr.

Skillbox ṣe iṣeduro: Ẹkọ lori ayelujara ti ẹkọ "Olugbese Java".

Gbẹ (Maṣe Tun Ara Rẹ Tun)

Ilana ti o rọrun ti o rọrun, pataki eyiti o han gbangba lati orukọ: “Maṣe tun ṣe ararẹ.” Fun pirogirama, eyi tumọ si iwulo lati yago fun koodu ẹda-iwe, bakanna bi aye lati lo abstraction ninu iṣẹ wọn.

Ti awọn apakan atunwi meji ba wa ninu koodu, wọn yẹ ki o ni idapo sinu ọna kan. Ti o ba jẹ pe iye koodu lile ti lo diẹ sii ju ẹẹkan lọ, o tọ lati yi pada si igbagbogbo gbogbo eniyan.

Eyi jẹ pataki lati le rọrun koodu ati jẹ ki o rọrun lati ṣetọju, eyiti o jẹ ibi-afẹde akọkọ ti OOP. O yẹ ki o ko lo apọju boya, nitori koodu kanna kii yoo kọja ijẹrisi pẹlu OrderId mejeeji ati SSN.

Encapsulating Ayipada

Pupọ awọn ọja sọfitiwia ile-iṣẹ n dagbasoke nigbagbogbo. Eyi tumọ si pe awọn iyipada nilo lati ṣe si koodu, o nilo lati ni atilẹyin. O le ṣe igbesi aye rẹ rọrun nipa lilo encapsulation. Eyi yoo gba ọ laaye lati ṣe idanwo daradara ati ṣetọju ipilẹ koodu ti o wa tẹlẹ. Eyi ni apẹẹrẹ kan.

Ti o ba kọ ni Java, lẹhinna sọtọ awọn ọna ikọkọ ati awọn oniyipada nipasẹ aiyipada.

Open/pipade opo

Ilana yii le ṣe iranti ni irọrun nipa kika alaye atẹle: “Awọn ohun elo sọfitiwia (awọn kilasi, awọn modulu, awọn iṣẹ, ati bẹbẹ lọ) yẹ ki o ṣii fun itẹsiwaju, ṣugbọn pipade fun iyipada.” Ni iṣe, eyi tumọ si pe wọn le jẹ ki ihuwasi wọn yipada laisi iyipada koodu orisun.

Ilana naa ṣe pataki nigbati awọn iyipada si koodu orisun nilo atunyẹwo koodu, idanwo ẹyọkan, ati awọn ilana miiran. Koodu ti o tẹle ilana ṣiṣi / pipade ko yipada nigba ti o gbooro sii, nitorinaa awọn iṣoro diẹ wa pẹlu rẹ.

Eyi jẹ apẹẹrẹ ti koodu ti o lodi si ipilẹ yii.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Ti o ba nilo lati yi nkan pada ninu rẹ, yoo gba akoko pupọ, nitori gbogbo awọn apakan ti koodu ti o ni asopọ pẹlu ajẹkù ti o fẹ yoo ni lati yipada.

Nipa ọna, ṣiṣi-sisọ jẹ ọkan ninu awọn ipilẹ ti SOLID.

Ilana Ojuse Kanṣo (SRP)

Ilana miiran lati SOLID ṣeto. Ó sọ pé “okùnfà kan ṣoṣo ló ń fa ìyípadà nínú kíláàsì.” Kilasi yanju iṣoro kan nikan. O le ni awọn ọna pupọ, ṣugbọn ọkọọkan wọn lo nikan lati yanju iṣoro ti o wọpọ. Gbogbo awọn ọna ati awọn ohun-ini yẹ ki o ṣiṣẹ nikan eyi.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Awọn iye ti yi opo ni wipe o loosen awọn pọ laarin awọn ẹni kọọkan paati software ati awọn koodu. Ti o ba ṣafikun iṣẹ ṣiṣe diẹ sii ju ọkan lọ si kilasi kan, o ṣafihan ibatan laarin awọn iṣẹ mejeeji. Nitorinaa, ti o ba yi ọkan ninu wọn pada, aye giga wa lati ba ekeji jẹ, eyiti o sopọ mọ ọkan akọkọ. Ati pe eyi tumọ si jijẹ awọn iyipo idanwo lati le ṣe idanimọ gbogbo awọn iṣoro ni ilosiwaju.

Ilana Iyipada Igbẹkẹle (DIP)

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Loke jẹ apẹẹrẹ koodu nibiti AppManager da lori EventLogWriter, eyiti o jẹ ibatan ni pẹkipẹki pẹlu AppManager. Ti o ba nilo ọna ti o yatọ lati ṣafihan ifitonileti kan, jẹ titari, SMS tabi imeeli, o nilo lati yi kilasi AppManager pada.

A le yanju iṣoro naa nipa lilo DIP. Nitorinaa, dipo AppManager, a beere fun EventLogWriter, eyiti yoo wa ni titẹ sii nipa lilo ilana naa.

DIP jẹ ki o rọrun lati rọpo awọn modulu kọọkan pẹlu awọn omiiran nipa yiyipada module igbẹkẹle. Eleyi mu ki o ṣee ṣe lati yi ọkan module lai ni ipa lori awọn miiran.

Tiwqn dipo ogún

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o MọAwọn ọna akọkọ meji lo wa lati tun lo koodu: ogún ati akopọ, mejeeji ni awọn anfani ati awọn alailanfani tiwọn. Nigbagbogbo keji jẹ ayanfẹ nitori pe o rọ diẹ sii.

Ipilẹṣẹ fun ọ ni agbara lati yi ihuwasi ti kilasi pada ni asiko asiko nipa ṣiṣeto awọn ohun-ini rẹ. Nigbati o ba n ṣe awọn atọkun, a lo polymorphism, eyiti o funni ni imuse irọrun diẹ sii.

Paapaa Java ti o munadoko nipasẹ Joshua Bloch ṣe imọran yiyan akopọ ju ogún lọ.

Ilana Iyipada Barbara Liskov (LSP)

Ilana miiran lati inu ohun elo irinṣẹ SOLID. O sọ pe awọn subtypes gbọdọ jẹ aropo fun supertype. Iyẹn ni, awọn ọna ati awọn iṣẹ ti o ṣiṣẹ pẹlu superclass yẹ ki o ni anfani lati ṣiṣẹ laisi awọn iṣoro pẹlu awọn kilasi-kekere rẹ.

LSP ni nkan ṣe pẹlu mejeeji ipilẹ ojuse ẹyọkan ati ipilẹ ojuse ti o pin. Ti kilasi kan ba pese iṣẹ ṣiṣe diẹ sii ju kilasi subkilasi kan, lẹhinna igbehin kii yoo ṣe atilẹyin diẹ ninu iṣẹ ṣiṣe, irufin ipilẹ yii.

Eyi ni nkan ti koodu ti o tako LSP.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Ọna agbegbe (Rectangle r) ṣe iṣiro agbegbe ti igun onigun kan. Eto naa yoo jamba lẹhin ṣiṣe Square nitori Square kii ṣe onigun mẹta nibi. Gẹgẹbi ilana LSP, awọn iṣẹ ti o lo awọn itọkasi si awọn kilasi mimọ yẹ ki o ni anfani lati lo awọn nkan ti awọn kilasi ti ari laisi awọn ilana afikun.

Ilana yii, eyiti o jẹ asọye kan pato ti iru-ẹda kan, ni imọran nipasẹ Barbara Liskov ni koko-ọrọ apejọ apejọ 1987 kan ti o ni ẹtọ ni “Abstraction Data and Heerarchy,” nitorinaa orukọ rẹ.

Ilana Pipin Ni wiwo (ISP)

Ilana SOLID miiran. Gẹgẹbi rẹ, wiwo ti a ko lo ko yẹ ki o ṣe imuse. Atẹle ilana yii ṣe iranlọwọ fun eto wa ni rọ ati pe o dara fun isọdọtun nigbati awọn ayipada ba ṣe si kannaa ṣiṣe.

Ni ọpọlọpọ igba, ipo yii waye nigbati wiwo ni awọn iṣẹ pupọ ni ẹẹkan, ati pe alabara nilo ọkan ninu wọn.

Niwọn igba ti kikọ ni wiwo jẹ iṣẹ ti o nira, yiyipada rẹ lẹhin ti iṣẹ naa ti pari laisi fifọ ohunkohun yoo jẹ ipenija.

Awọn anfani ti ilana ISP ni Java ni pe gbogbo awọn ọna gbọdọ wa ni imuse ni akọkọ, ati pe lẹhinna wọn le ṣee lo nipasẹ awọn kilasi. Nitorinaa, opo jẹ ki o ṣee ṣe lati dinku nọmba awọn ọna.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Siseto fun wiwo, kii ṣe imuse

Ohun gbogbo nibi jẹ kedere lati akọle. Lilo ilana yii nyorisi ẹda ti koodu rọ ti o le ṣiṣẹ pẹlu eyikeyi imuse tuntun ti wiwo.

O yẹ ki o lo iru wiwo fun awọn oniyipada, awọn oriṣi ipadabọ, tabi iru ariyanjiyan ọna. Apeere kan ni lilo SuperClass ju SubClass lọ.

Ti o jẹ:

Awọn nọmba akojọ = getNumbers ();

Ṣugbọn kii ṣe:

Awọn nọmba ArrayList = getNumbers ();

Eyi ni imuse ti o wulo ti ohun ti a sọrọ loke.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Ilana ti aṣoju

Apeere ti o wọpọ ni awọn ọna dọgba () ati hashCode () ni Java. Nigbati o ba jẹ dandan lati ṣe afiwe awọn nkan meji, iṣẹ yii jẹ aṣoju si kilasi ti o baamu dipo ọkan alabara.

Anfani ti opo ni pe ko si ẹda koodu ati pe o rọrun pupọ lati yi ihuwasi pada. O tun kan si aṣoju iṣẹlẹ.

10 Awọn Ilana Siseto-Oorun Ohun-elo Gbogbo Olùgbéejáde yẹ ki o Mọ

Gbogbo awọn ilana wọnyi gba ọ laaye lati kọ diẹ sii rọ, lẹwa ati koodu ti o gbẹkẹle pẹlu isọpọ giga ati isọpọ kekere. Nitoribẹẹ, imọ-jinlẹ dara, ṣugbọn fun idagbasoke lati lo imọ ti o ti gba nitootọ, adaṣe nilo. Ni kete ti o ba ti ni oye awọn ipilẹ OOP, igbesẹ ti o tẹle le jẹ lati kọ ẹkọ awọn ilana apẹrẹ lati yanju awọn iṣoro idagbasoke sọfitiwia ti o wọpọ.

Skillbox ṣe iṣeduro:

orisun: www.habr.com

Fi ọrọìwòye kun