10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Kanunay nakong nahimamat ang mga developer nga wala makadungog bahin sa mga prinsipyo sa SOLID (kami naghisgot bahin kanila sa detalye dinhi.. - Transl.) o object-oriented programming (OOP), o nadungog, apan ayaw kini gamita sa praktis. Gihubit niini nga artikulo ang mga benepisyo sa mga prinsipyo sa OOP nga makatabang sa developer sa iyang adlaw-adlaw nga trabaho. Ang uban kanila ilado kaayo, ang uban dili kaayo, mao nga ang artikulo mahimong mapuslanon alang sa mga nagsugod ug nasinati na nga mga programmer.

Gipahinumduman namon ikaw: alang sa tanan nga mga magbabasa sa "Habr" - usa ka diskwento sa 10 nga mga rubles kung nagpalista sa bisan unsang kurso sa Skillbox gamit ang code sa promosyon nga "Habr".

Girekomenda sa Skillbox: Online nga kurso sa edukasyon "Java Developer".

DRY (Ayaw Pag-usab sa Imong Kaugalingon)

Usa ka medyo yano nga prinsipyo, ang diwa niini klaro sa ngalan: "Ayaw pag-usab sa imong kaugalingon." Alang sa usa ka programmer, kini nagpasabot sa panginahanglan sa paglikay sa duplicate code, ingon man usab sa abilidad sa paggamit sa abstraction sa trabaho.

Kung adunay duha nga nagbalikbalik nga mga seksyon sa kodigo, kini kinahanglan nga gihiusa sa usa ka pamaagi. Kung ang usa ka hardcoded nga kantidad gigamit labaw pa sa kausa, angay nga i-convert kini sa usa ka kanunay nga publiko.

Gikinahanglan kini aron mapasimple ang code ug mapadali ang pagpadayon, nga mao ang panguna nga tahas sa OOP. Dili usab nimo abusuhon ang unyon, tungod kay ang parehas nga code dili mopasa sa tseke sa OrderId ug SSN.

Usba ang Encapsulation

Ang mga produkto sa software sa kadaghanan sa mga kompanya kanunay nga nag-uswag. Kini nagpasabot nga ang code kinahanglan nga usbon, kini kinahanglan nga magpadayon. Mahimo nimong mapadali ang imong kinabuhi gamit ang encapsulation. Kini magtugot kanimo sa mas epektibong pagsulay ug pagpadayon sa imong kasamtangan nga code base. Ania ang usa ka pananglitan.

Kung nagsulat ka sa Java unya i-assign ang pribado sa mga pamaagi ug mga variable pinaagi sa default.

Ang prinsipyo sa pagkabukas / pagkaduol

Kini nga prinsipyo dali nga mahinumduman pinaagi sa pagbasa sa mosunod nga pahayag: "Ang mga entidad sa software (mga klase, modules, functions, ug uban pa) kinahanglan nga bukas alang sa extension, apan sirado alang sa pagbag-o." Sa praktis, kini nagpasabot nga mahimo nilang tugutan ang ilang kinaiya nga mabag-o nga dili usbon ang source code.

Importante ang prinsipyo kung ang mga pagbag-o sa source code nanginahanglan mga rebisyon, pagsulay sa yunit, ug uban pang mga pamaagi. Ang code nga nagsunod sa open/closed nga prinsipyo dili mausab kung gipalugwayan, mao nga gamay ra ang mga problema niini.

Ania ang usa ka pananglitan sa code nga naglapas niini nga prinsipyo.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Kung kinahanglan nimo nga usbon ang usa ka butang niini, magkinahanglan kini og daghang oras, tungod kay kinahanglan nimo nga usbon ang tanan nga mga bahin sa code nga adunay koneksyon sa gusto nga tipik.

Pinaagi sa dalan, ang pagkabukas-pagkasirado usa sa mga prinsipyo sa SOLID.

Single Responsibility Principle (SRP)

Laing prinsipyo gikan sa SOLID set. Kini nag-ingon nga "adunay usa lamang ka rason nga mosangpot sa kausaban sa klase." Ang klase adunay usa lamang ka buluhaton. Mahimong adunay daghang mga pamaagi, apan ang matag usa niini gigamit lamang sa pagsulbad sa usa ka komon nga problema. Ang tanan nga mga pamaagi ug mga kabtangan kinahanglan nga magsilbi lamang niini.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Ang bili niini nga prinsipyo mao nga kini nagpalong sa sumpay tali sa usa ka piraso sa software ug sa code. Ang pagdugang ug labaw sa usa ka gamit sa usa ka klase nagpaila ug relasyon tali sa duha ka mga gimbuhaton. Busa, kon imong usbon ang usa niini, adunay dakong kahigayonan nga madaot ang ikaduha, nga may kalabotan sa una. Ug kini nagpasabut sa pagdugang sa mga siklo sa pagsulay aron mahibal-an daan ang tanan nga mga problema.

Dependency Inversion Principle (DIP)

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Ang naa sa ibabaw usa ka pananglitan sa code diin ang AppManager nagdepende sa EventLogWriter, nga sa baylo adunay kalabotan sa AppManager. Kung kinahanglan nimo ang lahi nga paagi aron ipakita ang pahibalo, bisan kini usa ka pagduso, SMS, o email, kinahanglan nimo nga usbon ang klase sa AppManager.

Ang problema masulbad sa DIP. Mao nga, imbis nga AppManager, nangayo kami usa ka EventLogWriter, nga i-inject gamit ang balangkas.

Ang DIP nagpaposible nga dali nga mapulihan ang indibidwal nga mga module sa uban pinaagi sa pagbag-o sa dependency module. Kini nagpaposible sa pag-ilis sa usa ka module nga dili makaapekto sa uban.

Komposisyon imbes nga kabilin

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo BahinAng duha ka nag-unang paagi sa paggamit pag-usab sa code mao ang kabilin ug komposisyon, ang matag usa adunay kaugalingong mga bentaha ug disbentaha. Ang ikaduha kasagaran gipalabi tungod kay kini mas flexible.

Ang komposisyon naghatag kanimo ug katakus sa pagbag-o sa pamatasan sa usa ka klase sa oras sa pagdagan pinaagi sa pagtakda sa mga kabtangan niini. Kung nagpatuman sa mga interface, gigamit ang polymorphism, nga naghatag usa ka labi ka dali nga pagpatuman.

Bisan ang "Epektibo nga Java" Joshua Bloch nagtambag nga paboran ang komposisyon kaysa sa kabilin.

Barbara Liskov Substitution Principle (LSP)

Laing prinsipyo gikan sa SOLID toolkit. Kini nag-ingon nga ang mga subtype kinahanglan nga pulihan alang sa usa ka supertype. Kana mao, ang mga pamaagi ug mga gimbuhaton nga nagtrabaho sa usa ka superclass kinahanglan nga makatrabaho nga wala’y mga problema sa mga subclass niini.

Ang LSP nalangkit sa Single Responsibility Principle ug Separation of Responsibility Principle. Kung ang usa ka klase naghatag labi pa nga gamit kaysa usa ka subclass, nan ang naulahi dili mosuporta sa pipila ka gamit, nga naglapas niini nga prinsipyo.

Ania ang usa ka piraso sa code nga sukwahi sa LSP.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Ang lugar (Rectangle r) nga pamaagi nagkalkula sa lugar sa usa ka Rectangle. Ang programa mag-crash pagkahuman sa pagpatuman sa Square, tungod kay ang Square dili usa ka Rectangle dinhi. Sumala sa prinsipyo sa LSP, ang mga gimbuhaton nga naggamit sa mga pakisayran sa mga base nga klase kinahanglan nga makagamit sa mga butang nga nakuha nga mga klase nga wala’y dugang nga mga panudlo.

Kini nga prinsipyo, nga usa ka piho nga kahulugan sa usa ka subtype, gisugyot ni Barbara Liskov sa usa ka keynote sa komperensya sa 1987 nga gitawag nga "Data Abstraction and Hierarchy" - busa ang ngalan niini.

Prinsipyo sa Pagbulag sa Interface (ISP)

Laing SOLID nga prinsipyo. Matod niya, dili angay ipatuman ang interface nga wala gigamit. Ang pagsunod sa kini nga prinsipyo makatabang sa sistema nga magpabilin nga flexible ug refactorable kung maghimo mga pagbag-o sa lohika sa trabaho.

Kasagaran, kini nga kahimtang mahitabo kung ang interface adunay daghang mga gamit sa usa ka higayon, ug ang kliyente nanginahanglan usa ra niini.

Tungod kay ang pagsulat sa usa ka interface usa ka komplikado nga buluhaton, pagkahuman sa trabaho, ang pagbag-o niini nga wala’y paglapas sa bisan unsang butang mahimong usa ka problema.

Ang bentaha sa prinsipyo sa ISP sa Java mao nga ang tanan nga mga pamaagi kinahanglan una nga ipatuman, ug unya kini magamit sa mga klase. Busa, ang prinsipyo nagpaposible sa pagpakunhod sa gidaghanon sa mga pamaagi.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Programming para sa Interface, Dili Implementasyon

Dinhi ang tanan klaro gikan sa ngalan. Ang pagpadapat niini nga prinsipyo modala ngadto sa flexible code nga mahimong magamit sa bisan unsang bag-ong pagpatuman sa interface.

Kinahanglan nimong gamiton ang usa ka tipo sa interface alang sa mga variable, mga tipo sa pagbalik, o ang tipo sa argumento sa pamaagi. Usa ka pananglitan mao ang paggamit sa SuperClass kay sa SubClass.

Mao ni:

Ilista ang mga numero= getNumbers();

Apan dili:

ArrayList nga mga numero = getNumbers();

Ania ang usa ka praktikal nga pagpatuman sa giingon sa ibabaw.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Prinsipyo sa delegasyon

Usa ka komon nga pananglitan mao ang equals() ug hashCode() nga mga pamaagi sa Java. Kung kinahanglan nga itandi ang duha ka butang, kini nga aksyon gitugyan sa angay nga klase imbes sa klase sa kliyente.

Ang bentaha sa prinsipyo mao nga walay pagdoble sa code ug kini sayon ​​​​nga usbon ang kinaiya. Magamit usab kini sa delegasyon sa kalihokan.

10 Object Oriented Programming Principles Ang Matag Developer Kinahanglan Mahibalo Bahin

Ang tanan niini nga mga prinsipyo nagtugot kanimo sa pagsulat nga mas flexible, matahum ug kasaligan nga code nga adunay taas nga pagkahiusa ug ubos nga pagdugtong. Siyempre, ang teorya maayo, apan alang sa usa ka developer nga magsugod gayud sa paggamit sa kahibalo nga nakuha, gikinahanglan ang praktis. Ang sunod nga lakang pagkahuman sa pag-master sa mga prinsipyo sa OOP mahimong ang pagtuon sa mga pattern sa disenyo alang sa pagsulbad sa kasagarang mga problema sa pagpalambo sa software.

Girekomenda sa Skillbox:

Source: www.habr.com

Idugang sa usa ka comment