{"id":37273,"date":"2019-10-31T22:16:42","date_gmt":"2019-10-31T19:16:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/korotko-o-glavnom-clean-architecture-robert-c-martin\/"},"modified":"2019-10-31T22:16:42","modified_gmt":"2019-10-31T19:16:42","slug":"korotko-o-glavnom-clean-architecture-robert-c-martin","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Pe scurt despre esen\u021bial: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Aceasta va fi o relatare despre impresiile legate de carte, precum \u0219i vor fi discutate unele concepte \u0219i cuno\u0219tin\u021be care, datorit\u0103 acestei c\u0103r\u021bi, au fost \u00eenv\u0103\u021bate.<\/p>\n<h3>Arhitectur\u0103<\/h3>\n<p>\nPute\u021bi, citind aceast\u0103 publica\u021bie, s\u0103 oferi\u021bi un r\u0103spuns clar la \u00eentrebarea ce este arhitectura? Ce \u00eenseamn\u0103 arhitectura \u00een contextul program\u0103rii \u0219i proiect\u0103rii? Ce rol joac\u0103 aceasta? Exist\u0103 destul de multe neclarit\u0103\u021bi \u00een acest termen. \u0218i, de\u0219i pare limpede, este oarecum abstract \u0219i lipsit de precizie. Martin consider\u0103, \u0219i eu sunt de acord cu el, c\u0103 o aplica\u021bie are dou\u0103 componente: <\/p>\n<ol>\n<li>Comportamentul (behavior) \u2013 func\u021biile \u0219i sarcinile pe care programul (componenta, serviciul) le \u00eendepline\u0219te.<\/li>\n<li>Arhitectura \u2013 acest termen se refer\u0103 \u00een principal la modificarea aplica\u021biei.<\/li>\n<\/ol>\n<p>\nDar chiar dac\u0103 aplica\u021bia \u00eendepline\u0219te foarte bine sarcina pe care trebuie s\u0103 o fac\u0103, nu \u00eenseamn\u0103 deloc c\u0103 are o arhitectur\u0103 bun\u0103. Arhitectura nu este despre comportamentul aplica\u021biei. Arhitectura este despre u\u0219urin\u021ba de modificare, arhitectura este despre u\u0219urin\u021ba de desf\u0103\u0219urare, arhitectura este despre independen\u021ba dezvolt\u0103rii. Arhitectura este despre viteza cu care un nou membru al echipei \u00een\u021belege lucrurile.<\/p>\n<p>\u0218i iat\u0103 cum s\u0103 construie\u0219ti aceast\u0103 arhitectur\u0103, cum s\u0103 scapi de durerile de cap atunci c\u00e2nd apar modific\u0103ri minore \u00een cerin\u021bele de la PM sau de la stakeholder: despre asta va vorbi cartea.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Despre autori<\/h3>\n<p>\n\u00cenainte de a spune orice despre aceast\u0103 carte, vreau s\u0103 spun c\u00e2teva lucruri despre mine.<br \/>\n\u00cen prezent sunt Strong Junior Developer, specializat \u00een dezvoltarea de servicii folosind ASP .NET CORE.<\/p>\n<p>Deja lucrez de un an \u00eentr-o \"galerie\", \u0219i pare c\u0103 m\u0103 descurc pu\u021bin c\u00e2te pu\u021bin.<\/p>\n<p>Am citit aceast\u0103 carte de dou\u0103 ori \u0219i o recomand tuturor:<\/p>\n<ul>\n<li>dezvoltatorilor de sisteme embeded;<\/li>\n<li>front-end developerilor;<\/li>\n<li>back-end developerilor;<\/li>\n<li>\u0219i chiar devops-urilor.<\/li>\n<\/ul>\n<p>\n\u00cen general, tuturor celor care sunt \u00eentr-un fel sau altul implica\u021bi \u00een dezvoltarea software-ului, m\u0103 refer la dezvoltarea efectiv\u0103 a diferitelor aplica\u021bii, nu iau \u00een calcul v\u00e2nz\u0103torii \u0219i PM-ii (de\u0219i ar fi util s\u0103 \u0219tii de ce un developer poate s\u0103 cheltuie de dou\u0103 ori mai mult timp pe o sarcin\u0103), v\u0103 recomand s\u0103 citi\u021bi aceast\u0103 carte.<br \/>\n\u0218i acum voi \u00eencerca s\u0103 argumentez de ce consider asta.<\/p>\n<p>Un pic despre autorul acestei c\u0103r\u021bi (deoarece pentru mine autoritatea celui ce scrie joac\u0103 un rol important). Cred c\u0103 m\u0103 ve\u021bi \u00een\u021belege, de\u0219i nu este \u00eentotdeauna corect, dar dac\u0103 v\u0103 vorbe\u0219te o persoan\u0103 cu autoritate \u00een domeniu \u2014 ave\u021bi mult mai mult\u0103 \u00eencredere \u00een ceea ce spune. De exemplu, cred c\u0103 ve\u021bi crede mai mult \u00een diagnosticul pe care vi-l pune medicul dec\u00e2t \u00een cel al cuiva din mul\u021bime (care a c\u0103utat simptomele pe Google).<\/p>\n<p>Robert Martin \u2014 cunoscut \u0219i sub numele de Uncle Bob (Unchiul Bob) \u2014 lucreaz\u0103 \u00een domeniul program\u0103rii din 1970, acoperind diferite sisteme (de la servicii web la sisteme embeded). Este consultant tehnic \u0219i arhitect, a scris pentru diverse reviste tehnice, fiind un programator foarte experimentat \u0219i o persoan\u0103 care a avut un rol esen\u021bial \u00een crearea bine cunoscutelor principii SOLID (poate fi considerat creatorul). De asemenea, a\u0219 vrea s\u0103 adaug c\u0103 mi-a recomandat aceast\u0103 carte liderul echipei mele, care are peste 15 ani de experien\u021b\u0103.<\/p>\n<h2>Despre carte<\/h2>\n<p><\/p>\n<h3>Dependin\u021be<\/h3>\n<p>\n\u00cenainte de a citi cartea, am citit destul de multe articole pe acela\u0219i site, unde ap\u0103rea cuv\u00e2ntul \u201edependen\u021b\u0103\u201d. Ce \u00eenseamn\u0103 aceasta, cine este dependent de cine, ce \u00eenseamn\u0103, \u00een mod concret, \u201ea depinde\u201d \u0219i cum poate un anumit clas\u0103 s\u0103 depind\u0103 de alta? <\/p>\n<p>\u0218i, pe m\u0103sur\u0103 ce am citit cartea, am \u00eenv\u0103\u021bat dou\u0103 lucruri:<\/p>\n<p>Dependen\u021ba este un termen care \u00eenseamn\u0103 c\u0103 o anumit\u0103 clas\u0103 (component\u0103, serviciu) \u0219tie despre o alt\u0103 clas\u0103 (component\u0103, serviciu) \u0219i aceast\u0103 cunoa\u0219tere la nivel de cod este definit\u0103 (acum programatorii Java, C# \u0219i C vor \u00een\u021belege asta) printr-un anumit import de namespace. Cu alte cuvinte: dac\u0103 ave\u021bi clasa A cu namespace-ul Default.Classes \u0219i clasa B cu Another.Classes. A\u0219adar, dac\u0103 \u00een codul surs\u0103 al clasei A apare using Another.Classes; \u2014 \u00eenseamn\u0103 c\u0103 clasa A depinde de clasa B. <br \/>\nPentru a \u00een\u021belege din diagram\u0103 care este clasa dependent\u0103 \u0219i care nu \u2014 privi\u021bi direc\u021bia s\u0103ge\u021bii: \u00een 1) s\u0103geata va indica de la clasa A c\u0103tre clasa B. Acest lucru \u00eenseamn\u0103 c\u0103 clasa B este mai independent\u0103 dec\u00e2t clasa A. \u0218i modific\u0103rile din clasa A nu vor cauza niciun \u201ed\u0103un\u201d clasei B.<\/p>\n<p><img decoding=\"async\" alt=\"Pe scurt despre esen\u021bial: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/e8a54c03bc1aaf23aec3d24b002fc866.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>SOLID<\/h3>\n<p>\nUna dintre principalele motive pentru care am citit aceast\u0103 carte \u2014 este explica\u021bia principiilor S\u041eLID din prima surs\u0103, deoarece unchiul Rob a dezvoltat aceste principii \u0219i se poate spune c\u0103 datorit\u0103 lui auzim acest nume \u2014 SOLID.<br \/>\nPentru cei care nu \u0219tiu, aceste principii indic\u0103 \u0219i recomand\u0103 s\u0103 ne proiect\u0103m aplica\u021biile conform celor 5 reguli:<\/p>\n<p>S \u2014 SRP (Principiul responsabilit\u0103\u021bii unice)<br \/>\nO \u2014 OCP (Principiul deschis-\u00eenchis)<br \/>\nL \u2014 LSP (Principiul de substitu\u021bie Liskov)<br \/>\nI \u2014 ISP (Principiul segreg\u0103rii interfe\u021belor)<br \/>\nD \u2014 DIP (Principiul invers\u0103rii dependen\u021bei)<\/p>\n<p>Toate aceste principii pot fi aplicate la nivelul claselor \u0219i obiectelor, al modulelor \u0219i componentelor, precum \u0219i la nivelul straturilor (serviciilor).<\/p>\n<p>Dac\u0103 considera\u021bi c\u0103 Principiul responsabilit\u0103\u021bii unice se refer\u0103 la faptul c\u0103 o clas\u0103 sau un modul ar trebui s\u0103 fac\u0103 doar un singur lucru, atunci trebuie s\u0103 citi\u021bi m\u0103car un capitol despre SOLID. Defini\u021bia dat\u0103 mai sus este o consecin\u021b\u0103, dar nu este defini\u021bia propriu-zis\u0103 a principiului.<\/p>\n<h3>Despre inversarea dependen\u021bei<\/h3>\n<p>\nA\u0219 dori s\u0103 acord o aten\u021bie special\u0103 clarific\u0103rii Principiului invers\u0103rii dependen\u021bei (cel care este D din SOLID). Pe parcursul lecturii c\u0103r\u021bii, am realizat c\u0103 nu este doar un principiu, ci \u0219i un mecanism \u0219i un instrument prin care pute\u021bi schimba direc\u021bia dependen\u021belor dumneavoastr\u0103 \u0219i face, de exemplu, logica de afaceri (DOMAIN) independent\u0103 de detaliile de implementare ale stratului de acces la date (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Pe scurt despre esen\u021bial: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe\u0219i principiul \u00een sine, al\u0103turi de celelalte din SOLID, \u00eenseamn\u0103 pu\u021bin altceva dec\u00e2t mecanismul, acest mecanism este folosit pe parcursul \u00eentregii c\u0103r\u021bi \u0219i este unul dintre metodele principale de a inversa \u0219i schimba direc\u021bia dependen\u021belor dumneavoastr\u0103, care este folosit \u0219i \u00een DDD.<\/p>\n<h3>Despre luarea deciziilor arhitecturale<\/h3>\n<p>\nFoarte des, \u00een carte, se va face referire la principiul lu\u0103rii unor decizii arhitecturale importante: despre ce baz\u0103 de date s\u0103 folosi\u021bi, ce cadru s\u0103 utiliza\u021bi, ce bibliotec\u0103 s\u0103 conecta\u021bi, ce s\u0103 folosi\u021bi ca motor de c\u0103utare etc.<\/p>\n<p>A\u0219adar, autorul consider\u0103 c\u0103 ar trebui s\u0103 lua\u021bi C\u00c2T MAI PU\u021aINE astfel de decizii. Deoarece cerin\u021bele se pot schimba, restric\u021biile de performan\u021b\u0103, de asemenea, natura comportamental\u0103 tinde s\u0103 se schimbe. \u00cen procesul de dezvoltare, o anumit\u0103 decizie poate p\u0103rea mai pu\u021bin eficient\u0103 dec\u00e2t alta, mai pu\u021bin convenabil\u0103 dec\u00e2t alta. \u0218i puterea arhitecturii tale va determina c\u00e2t de rapid \u0219i f\u0103r\u0103 durere po\u021bi \u00eenlocui o tehnologie cu alta (despre asta, de altfel, se vorbe\u0219te \u0219i \u00een OCP).<\/p>\n<p>De exemplu, brusc, ai decis s\u0103 folose\u0219ti, \u00een loc de Postgresql, MongoDb, sau chiar fi\u0219iere, sau s\u0103 folose\u0219ti date simulate, cu care opera\u021biile se vor efectua \u00een memorie. \u0218i \u00een anumite condi\u021bii \u2014 acest lucru poate obliga s\u0103 rescrii aproape \u00eentreaga logic\u0103. <\/p>\n<p>Pentru a preveni astfel de situa\u021bii, putem utiliza anumite mecanisme care vor maximiza timpul de luare a deciziilor. Unul dintre aceste mecanisme este abstrac\u021bia.<\/p>\n<h3>Referin\u021be la DDD<\/h3>\n<p>\nDDD \u2014 Domain Driven Design \u2014 este o abordare pentru dezvoltarea serviciilor cu logic\u0103 de afaceri complex\u0103, critic\u0103 la schimb\u0103ri, care se concentreaz\u0103 pe \u00een\u021belegerea maxim\u0103 a rolurilor de conducere \u00een proiect (PMs, Manageri de v\u00e2nz\u0103ri etc.) \u00eempreun\u0103 cu membrii echipelor. Adic\u0103, se dovede\u0219te c\u0103 \u00eentre to\u021bi membrii proiectului exist\u0103 un limbaj omniprezent, astfel \u00eenc\u00e2t fiecare s\u0103 poat\u0103 \u00een\u021belege pe ceilal\u021bi, iar to\u021bi s\u0103 g\u00e2ndeasc\u0103 \u00eentr-un singur domeniu cu acelea\u0219i reguli de afaceri.<\/p>\n<p>Dac\u0103 e\u0219ti un sus\u021bin\u0103tor al DDD, sau vrei s\u0103 devii unul, sau nu \u00een\u021belegi nimic din asta, dar vrei s\u0103 \u00een\u021belegi \u2014 cartea este obligatorie de citit, \u00een special partea a doua.<\/p>\n<p>Aici autorul explic\u0103 existen\u021ba Regulii Dependen\u021bei \u0219i de ce, urm\u00e2nd-o, vei construi o arhitectur\u0103 corect\u0103 a aplica\u021biei. De ce dependen\u021bele trebuie s\u0103 urmeze o direc\u021bie c\u0103tre componentele de Politic\u0103 \u00cenalt\u0103, de ce. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/domain\/\"   title=\"domeniu\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">domeniu<\/a> (Componen\u021ba de Politic\u0103 \u00cenalt\u0103) trebuie s\u0103 fie independent\u0103 de infrastructur\u0103 \u0219i cum acest lucru \u00ee\u021bi va simplifica desf\u0103\u0219urarea \u0219i dezvoltarea.<\/p>\n<p><img decoding=\"async\" alt=\"Pe scurt despre esen\u021bial: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstrahere<\/h3>\n<p>\nUncle Bob, de asemenea, vorbe\u0219te despre cum detaliile de implementare pot d\u0103una sistemului t\u0103u \u0219i nu \u00ee\u021bi vor permite s\u0103 evoluezi f\u0103r\u0103 durere \u00een viitor.<\/p>\n<p>Aminte\u0219te-\u021bi!<br \/>\nBD este un detaliu de implementare<br \/>\nClien\u021bii (Web, Mobil etc.) sunt detalii de implementare<br \/>\nFramework-urile sunt detalii de implementare<\/p>\n<p>Trebuie s\u0103 te abstrezi c\u00e2t mai mult de toate acestea \u0219i s\u0103 nu depinzi, utiliz\u00e2nd inversarea dependen\u021belor descris\u0103 mai sus cu interfe\u021be \u0219i abstra\u021bii, Regulile de Dependen\u021b\u0103 \u0219i alte mecanisme.<\/p>\n<h3>Metode de construire a modulelor<\/h3>\n<p>\nAceast\u0103 sec\u021biune mi-a pl\u0103cut \u00een mod deosebit, ca dezvoltator de servicii pe ASP .NET CORE. Aici se discut\u0103 despre metodologiile de construire a unei arhitecturi unice a serviciului din componentele existente. <\/p>\n<p>Robert a descris 4 scheme posibile de separare a straturilor.<\/p>\n<p>El a l\u0103sat de \u00een\u021beles de ce mecanismul deseori utilizat al arhitecturii \u00een 3 straturi: UI (controale), Servicii (Domeniu), DAL (Baz\u0103 de date) \u2014 este destul de slab \u00een compara\u021bie cu altele. Am v\u0103zut nu foarte multe proiecte, dar \u00een fiecare, de exemplu \u00een micro-servicii, pe backend, se folose\u0219te exact arhitectura \u00een trei straturi. <\/p>\n<p>De asemenea, destul de des, se folose\u0219te arhitectura un-component-un-serviciu. \u00cen general, ambele sunt acceptabile, dar aceasta are destul de multe dezavantaje comparativ cu modul \u00een care se construie\u0219te arhitectura folosind DDD, mai ales \u00een cazul serviciilor critice pentru modificare \u0219i complexe.<\/p>\n<p>\u00cen concluzie, acest review al c\u0103r\u021bii a ajuns la final. Mie mi-a pl\u0103cut foarte mult cartea, nu regret c\u0103 am citit-o, mul\u021bumesc autorului. Voi, dragi cititori, mul\u021bumesc pentru aten\u021bie, nu judeca\u021bi prea aspru \u2014 aceast\u0103 publica\u021bie este bazat\u0103 pe impresiile mele despre carte \u0219i pe entuziasmul meu personal.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464185\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0438 \u043e \u043a\u043d\u0438\u0433\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0437\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0435, \u0431\u044b\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u044b \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0447\u0438\u0442\u0430\u044f \u044d\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0434\u0430\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f? \u041a\u0430\u043a\u0443\u044e \u0440\u043e\u043b\u044c \u043e\u043d\u0430 \u0438\u0433\u0440\u0430\u0435\u0442? \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u044f\u0441\u043d\u043e\u0441\u0442\u0435\u0439 \u0435\u0441\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0435. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27958,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-37273","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0438 \u043e \u043a\u043d\u0438\u0433\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0437\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0435, \u0431\u044b\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u044b \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0447\u0438\u0442\u0430\u044f \u044d\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0434\u0430\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u0433\u043b\u0430\u0432\u043d\u043e\u043c: Clean Architecture, Robert C. Martin | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0438 \u043e \u043a\u043d\u0438\u0433\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0437\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0435, \u0431\u044b\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u044b \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0447\u0438\u0442\u0430\u044f \u044d\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0434\u0430\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:16:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:16:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Pe scurt despre esen\u021bial: Clean Architecture, Robert C. Martin | ProHoster","description":"Aceasta va fi o poveste despre impresiile despre carte, precum \u0219i vor fi discutate unele concepte \u0219i cuno\u0219tin\u021be care, datorit\u0103 acestei c\u0103r\u021bi, au fost studiate. Arhitectura. Pute\u021bi, citind aceast\u0103 publica\u021bie, s\u0103 oferi\u021bi feedback?","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u0433\u043b\u0430\u0432\u043d\u043e\u043c: Clean Architecture, Robert C. Martin | ProHoster","og:description":"\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0438 \u043e \u043a\u043d\u0438\u0433\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0438 \u0437\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0435, \u0431\u044b\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u044b \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0447\u0438\u0442\u0430\u044f \u044d\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0434\u0430\u0442\u044c.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:16:42+00:00","article:modified_time":"2019-10-31T19:16:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37273","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-03-05 11:16:40","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:30:00","updated":"2026-03-05 11:16:40","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}