tutorial

SOLID kung unsa ang 5 nga mga prinsipyo sa object oriented nga programa

Ang SOLID usa ka acronym, nagtumong sa lima ka mga prinsipyo sa object-oriented design (OOD o OOP). Kini ang mga panudlo nga mahimong magamit sa mga developer aron makahimo software nga dali nga madumala, mapadayon ug mapaabot. Ang pagsabut sa kini nga mga konsepto maghimo kanimo nga usa ka labing kaayo nga developer ug makatabang kanimo nga malikayan ang mga problema sa pagdumala sa software. Unsa ang gipasabut sa usa ka maayo nga programmer?

Ang bisan kinsa nga adunay pipila nga kasinatian sa pagprograma sa software naghukum sa software code nga gisulat sa uban, gamit ang mga parameter sa paghukum pinahiuyon sa ilang agianan sa karera.

Sa kurso sa akong propesyonal nga karera, daghan ang akong nailhan mga taghimo, ug nakita nako ang libu-libo nga mga linya sa code ug kung kinahanglan nako nga susihon ang kahanas sa usa ka nagpatubo nga akong gitan-aw ang duha nga mga hinungdan:

  • Kasayon ​​sa pagbasa sa code;
  • Giunsa ang ilang code mahimo nga molihok ug magbag-o sa paglabay sa panahon.

Maayo na lang, adunay pipila nga mga sukaranan o prinsipyo nga gihimo nga dali nga mahimong labi ka maayo sa pag-coding.

ang acronym nga SOLID nagpasabut alang sa:
S: prinsipyo sa nag-inusarang responsibilidad
O: ablihan nga prinsipyo
L: Baruganan sa pagpuli sa Liskov
I: Baruganan sa pagbulag sa interface
D: Baruganan sa Inversion of Dependencies

Magsugod kita pinaagi sa pagsusi sa una nga prinsipyo sa SOLID, nga mao ang

Single nga Baruganan sa Responsibilidad

Ang usa ka klase (o modyul) kinahanglan adunay usa ra nga katarungan nga magbag-o, aron magbag-o.

Ang konsepto mismo yano kaayo, apan aron maangkon ang kini nga pagkayano ang pagpatuman nga dalan mahimong labi ka komplikado. Ang usa ka klase kinahanglan adunay usa ra nga hinungdan nga magbag-o.

Apan ngano man? 

Ngano nga hinungdanon nga adunay usa ra nga hinungdan nga magbag-o?

Pananglitan, kung adunay duha ka lainlaing mga hinungdan sa pagbag-o, mahunahuna nga ang duha ka lainlaing mga koponan mahimong magtrabaho sa parehas nga code alang sa duha nga magkalainlain nga mga hinungdan. Kinahanglan nga ipatuman sa matag usa ang ilang kaugalingon nga solusyon, nga sa kaso sa usa ka nahipos nga sinultian (sama sa C ++, C # o Java), mahimong magdala sa mga modyul nga dili mahiuyon sa ubang mga koponan o ubang mga bahin sa aplikasyon.

Ang uban pa nga pananglitan, kung naggamit ka usa ka hubad nga sinultian, mahimo nimo nga sulayan usab ang parehas nga klase o modyul sa lainlaing mga hinungdan. Kini nagpasabut nga daghang trabaho, oras ug paningkamot alang sa pagkontrol sa kalidad.

Ang pag-ila sa us aka bahin nga kinahanglan adunay usa ka klase o modyul nga labi ka komplikado kaysa sa pagtan-aw ra sa usa ka checklist aron mapadagan ang mga pagsulay. 

Apan paningkamutan naton nga hunahunaon gikan sa usa ka dili kaayo teknikal nga panan-aw, sa ato pa, sulayan naton nga analisahon ang naggamit sa atong klase o module, kana ang mogamit niini Usa ka sukaranan nga aspeto nga kinahanglan naton kanunay hinumduman, mao ang katinuud nga ang mga ninggamit sa aplikasyon o sistema nga gipalambo namon nga giserbisyohan sa usa ka piho nga modyul mao ang maghangyo nga mga pagbag-o niini. Ang mga gisilbihan mohangyo nga usbon ang klase o modyul. 

Pipila nga mga pananglitan sa mga modyul ug paggamit niini:

  • Module sa pagpadayon: ang mogamit sa mga tagdumala sa database ug mga arkitekto sa software.
  • Module sa pagreport: ang mogamit sa mga empleyado sa opisina, accountant ug produksyon.
  • Module sa pagkalkula sa pagbayad alang sa usa ka sistema sa pagdumala sa payroll: ang mga mogamit mahimong mag-upod sa mga abogado, tigdumala ug accountant.
  • Module sa pagpangita sa teksto alang sa usa ka sistema sa pagdumala sa librarya: ang mga mogamit mahimong girepresenta sa librarian o sa mga bisita ug kostumer sa librarya mismo.

Mao nga kung ang una nga lakang mao ang pagpangita alang sa mga artista o sa artista nga adunay papel nga interlocutor sa modyul, ang pag-uban sa mga indibidwal sa tanan nga mga tahas mahimo’g lisud. Sa usa ka gamay nga kompanya, ang usa ka tawo mahimo’g adunay daghang papel samtang sa usa ka daghang kompanya mahimo’g daghang mga tawo nga adunay usa ka papel. 

Daw mas makatarunganon ang pag-ila sa mga tahas, kaysa sa mga tawo o ninggamit.

Busa:

  • ang paggamit sa sistema sa software definagpatin-aw sa mga hinungdan sa pagbag-o;
  • ang usa ka kaakohan usa ka pamilya sa mga gimbuhaton nga nagtagbaw sa mga kinahanglanon sa usa ka piho nga artista, kana, sa naggamit sa sistema;
  • ang mga artista, ang mogamit mahimong usa ka hinungdan sa pagbag-o alang sa pamilya nga adunay katungdanan nga kinahanglan makatagbaw sa kinahanglan sa gumagamit;
  • ang ebolusyon sa mga kinahanglanon sa mogamit, naggiya sa ebolusyon sa pagpaandar;

Kitaa naton an pipira nga mga ehemplo

Pananglit adunay kami usa ka klase sa Libro nga naglangkob sa konsepto sa usa ka libro ug sa pagpaandar niini.

Basahon sa klase {

    pag-andar getTitle () {

        ibalik ang "Usa ka Daghang Libro";

    }

    function getAuthor () {

        ibalik ang "Alessandro Baricco";

    }

    pag-andar sa sunod nga panid () {

        // sunod nga panid

    }

    pagpaandar printCurrentPage () {

        ipalanog ang "sulud sa karon nga panid";

    }

}

Kini usa ka normal kaayo nga klase. Adunay kami usa ka libro, ug ang klase mahimong makahatag kanamo og titulo, makahatag kanamo nga tagsulat, ug makapadayon. Sa katapusan, kini usab makahimo sa pag-print sa karon nga panid sa screen. 

Bisan pa, adunay gamay nga problema. 

Naghunahuna bahin sa mga artista nga nahilambigit sa pagdumala sa butang nga Basahon, kinsa sila? 

Dali naton mahunahuna ang duha ka lainlaing mga artista dinhi: Pagdumala sa libro (sama sa librarian) ug Mekanismo sa pagsumite sa datos (sama kung giunsa namon gusto nga ihatud ang sulud sa ninggamit: on-screen, graphic user interface, text-only user interface, tingali pag-print). 

Adunay kami duha nga magkalainlain nga mga artista nga nakig-uban sa klase.

Sa laktud nga pagkasulti kini nga klase naghimo usa ka pagsagol taliwala sa:

  • lohika sa negosyo sa 
  • ang presentasyon 

mahimo kini usa ka problema tungod kay nakalapas kini sa us aka prinsipyo sa kaakohan (SRP). 

Giunsa man naton mabag-o, giunsa naton mapaayo ang kini nga kodigo aron matahod ang prinsipyo sa nag-inusarang responsibilidad?

Tan-awa ang mosunud nga kodigo:

Basahon sa klase {

    pag-andar getTitle () {

        ibalik ang "Oceano Mare";

    }

    function getAuthor () {

        ibalik ang "Alessandro Baricco";

    }

    paglihok sa panid sa pagliko () {

        // sunod nga panid

    }

    function getCurrentPage () {

        ipalanog ang "sulud sa karon nga panid";

    }

}

interface Printer {

    function printPage ($ panid);

newsletter sa kabag-ohan
Ayaw kalimti ang labing hinungdanon nga balita sa kabag-ohan. Pag-sign up aron madawat sila pinaagi sa email.

}

Ang klase nga StampaLibro nagpatuman sa Printer {

    pagpaandar sa mga printPage ($ panid) {

        echo $ panid;

    }

}

 

gipatuman sa klase nga htmlPrinter ang Printer {

    pagpaandar sa mga printPage ($ panid) {

        lanog ' '. $ panid ' ';

    }

}

Ang kini nga yano kaayo nga pananglitan nagpakita kung giunsa pagbulag ang presentasyon gikan sa lohika sa negosyo, ug sa pagsunod sa SRP nagtanyag kini og daghang mga bentaha sa pagkaangay sa among proyekto.

Atong tan-awon ang laing pananglitan:

Ang usa ka pananglitan nga parehas sa usa sa taas kung ang usa ka butang mahimo makatipig ug makuha ang kaugalingon gikan sa presentasyon.

Basahon sa klase {

    pag-andar getTitle () {

        ibalik ang "Oceano Mare";

    }

    function getAuthor () {

        ibalik ang "Alessandro Baricco";

    }

    paglihok sa panid sa pagliko () {

        // sunod nga panid

    }

    function getCurrentPage () {

        ibalik ang "sulud sa karon nga panid";

    }

    pagluwas sa function () {

        $ filename = '/ mga dokumento /'. $ kini-> getTitolo (). '-'. $ kini-> getAuthor ();

        file_put_contents ($ filename, serialize ($ kini));

    }

}

Sama kaniadto, dinhi usab naton maila ang lainlaing mga gusto sa artista Pagdumala sa libro (sama sa librarian) ug Paglahutay. Bisan kanus-a namon gusto nga usbon ang paagi sa among paglihok gikan sa usa ka panid ngadto sa us aka panid, kinahanglan naton nga bag-ohon kini nga klase. Adunay kita daghang mga hinungdan sa pagbag-o.

Basahon sa klase {

    pag-andar getTitle () {

        ibalik ang "Oceano Mare";

    }

    function getAuthor () {

        ibalik ang "Alessandro Baricco";

    }

    paglihok sa panid sa pagliko () {

        // sunod nga panid

    }

    function getCurrentPage () {

        ibalik ang "sulud sa karon nga panid";

    }

}

klase nga SimpleFilePersistence {

    pagluwas sa function (Book $ book) {

        $ filename = '/ mga dokumento /'. $ libro-> getTitle (). '-'. $ libro-> getAuthor ();

        file_put_contents ($ filename, serialize ($ libro));

    }

}

Ang pagbalhin sa pagpadayon sa operasyon sa lain nga klase klaro nga magkalain ang mga kaakohan ug libre kita nga magbaylo mga pamaagi sa pagpadayon nga wala makaapekto sa among klase sa Basahon. Pananglitan, ang pagpatuman sa usa ka klase sa DatabasePersistence mahimong gagmay, ug ang among lohika sa negosyo nga gitukod libot sa mga operasyon sa libro dili mausab.

Ipadayon ang pagbasa sa ikaduhang prinsipyo nga Bukas / Tak-opan ->

Ercole Palmeri

newsletter sa kabag-ohan
Ayaw kalimti ang labing hinungdanon nga balita sa kabag-ohan. Pag-sign up aron madawat sila pinaagi sa email.

Bag-ong mga artikulo

Gipakita sa Veeam ang labing komprehensibo nga suporta alang sa ransomware, gikan sa proteksyon hangtod sa pagtubag ug pagbawi

Ang Coveware ni Veeam magpadayon sa paghatag serbisyo sa pagtubag sa insidente sa cyber extortion. Magtanyag ang Coveware og mga kapabilidad sa forensics ug remediation…

23 Abril 2024

Green ug Digital nga Rebolusyon: Giunsa Pagbag-o sa Pagmentinar sa Pagtagna ang Industriya sa Langis ug Gas

Ang prediktibo nga pagmentinar nagbag-o sa sektor sa lana ug gas, nga adunay usa ka bag-o ug aktibo nga pamaagi sa pagdumala sa tanum.…

22 Abril 2024

Ang regulator sa antitrust sa UK nagpataas sa alarma sa BigTech sa GenAI

Ang UK CMA nagpagula usa ka pasidaan bahin sa pamatasan sa Big Tech sa merkado sa artipisyal nga paniktik. didto…

18 Abril 2024

Casa Green: rebolusyon sa enerhiya alang sa malungtarong kaugmaon sa Italya

Ang "Green Houses" Decree, nga gimugna sa European Union aron mapalambo ang energy efficiency sa mga bilding, nagtapos sa proseso sa lehislatibo niini sa…

18 Abril 2024