{"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\/cs\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Stru\u010dn\u011b o hlavn\u00edm: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Toto bude p\u0159\u00edb\u011bh o dojmech z knihy a tak\u00e9 se zde projednaj\u00ed n\u011bkter\u00e9 pojmy a znalosti, kter\u00e9 d\u00edky t\u00e9to knize byly z\u00edsk\u00e1ny.<\/p>\n<h3>Architektura<\/h3>\n<p>\nM\u016f\u017eete p\u0159i \u010dten\u00ed t\u00e9to publikace d\u00e1t jasnou odpov\u011b\u010f na ot\u00e1zku, co je architektura? Co znamen\u00e1 architektura v kontextu programov\u00e1n\u00ed a designu? Jakou roli hraje? Existuje spousta nejasnost\u00ed kolem tohoto term\u00ednu. A\u010dkoliv to vypad\u00e1 jasn\u011b, je to pon\u011bkud abstraktn\u00ed a bez p\u0159esnosti. Martin se domn\u00edv\u00e1, a j\u00e1 s n\u00edm souhlas\u00edm, \u017ee aplikace m\u00e1 dv\u011b slo\u017eky: <\/p>\n<ol>\n<li>Chov\u00e1n\u00ed (behavior) \u2014 funkce a \u00fakoly, kter\u00e9 program (komponenta, slu\u017eba) vykon\u00e1v\u00e1.<\/li>\n<li>Architektura \u2014 tento term\u00edn se v\u00edce t\u00fdk\u00e1 zm\u011bny aplikace.<\/li>\n<\/ol>\n<p>\nAv\u0161ak i kdy\u017e aplikace velmi dob\u0159e pln\u00ed \u00fakol, kter\u00fd m\u00e1 vykon\u00e1vat, neznamen\u00e1 to, \u017ee m\u00e1 dobrou architekturu. Architektura nen\u00ed o chov\u00e1n\u00ed aplikace. Architektura je o snadnosti zm\u011bn, architektura je o snadnosti nasazen\u00ed, architektura je o nez\u00e1vislosti v\u00fdvoje. Architektura je o rychlosti, s jakou nov\u00fd \u010dlen t\u00fdmu porozum\u00ed aplikaci.<\/p>\n<p>A jak tuto architekturu budovat, jak se zbavit bolesti hlavy p\u0159i drobn\u00fdch zm\u011bn\u00e1ch po\u017eadavk\u016f od PM nebo stakeholdera: o tom a bude tato kniha hovo\u0159it.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>O autorech<\/h3>\n<p>\nP\u0159edt\u00edm, ne\u017e n\u011bco \u0159eknu o t\u00e9to knize, chci \u0159\u00edct n\u011bco m\u00e1lo o sob\u011b.<br \/>\nV sou\u010dasn\u00e9 dob\u011b jsem Strong Junior Developer, specializuji se na v\u00fdvoj slu\u017eeb pomoc\u00ed ASP .NET CORE.<\/p>\n<p>U\u017e rok pracuji na jednom \"galeri\u00ed\" a zd\u00e1 se, \u017ee si s t\u00edm tak n\u011bjak porad\u00edm.<\/p>\n<p>Tuto knihu jsem p\u0159e\u010detl u\u017e dvakr\u00e1t a doporu\u010duji ji v\u0161em:<\/p>\n<ul>\n<li>v\u00fdvoj\u00e1\u0159\u016fm embedded syst\u00e9m\u016f;<\/li>\n<li>frontendov\u00fdm v\u00fdvoj\u00e1\u0159\u016fm;<\/li>\n<li>backendov\u00fdm v\u00fdvoj\u00e1\u0159\u016fm;<\/li>\n<li>a dokonce i devops\u00e1k\u016fm.<\/li>\n<\/ul>\n<p>\nObecn\u011b v\u0161em, kdo se n\u011bjak\u00fdm zp\u016fsobem pod\u00edlej\u00ed na v\u00fdvoji software, tj. p\u0159\u00edm\u00e9 v\u00fdvoji r\u016fzn\u00fdch Sales a PM sem nezapo\u010d\u00edt\u00e1v\u00e1me (a\u010dkoli by tak\u00e9 bylo u\u017eite\u010dn\u00e9 v\u011bd\u011bt, pro\u010d dev str\u00e1v\u00ed dvakr\u00e1t v\u00edce \u010dasu na \u00fakolu), doporu\u010duji p\u0159e\u010d\u00edst tuto knihu.<br \/>\nA nyn\u00ed se pokus\u00edm argumentovat, pro\u010d to mysl\u00edm v\u00e1\u017en\u011b.<\/p>\n<p>Trochu o autorovi t\u00e9to knihy (proto\u017ee pro m\u011b m\u00e1 autorita autora velk\u00fd v\u00fdznam). Mysl\u00edm, \u017ee m\u011b pochop\u00edte, i kdy\u017e to nen\u00ed v\u017edy spr\u00e1vn\u00e9, ale pokud v\u00e1m n\u011bco \u0159\u00edk\u00e1 autoritativn\u00ed osoba v oboru \u2014 projevujete mnohem v\u011bt\u0161\u00ed d\u016fv\u011bru k tomu, co \u0159\u00edk\u00e1. Nap\u0159\u00edklad v\u011b\u0159\u00edm, \u017ee v\u00edce uv\u011b\u0159\u00edte diagn\u00f3ze, kterou v\u00e1m stanov\u00ed l\u00e9ka\u0159, ne\u017e od n\u011bjak\u00e9ho \u010dlov\u011bka z davu (kdo si vygooglil p\u0159\u00edznaky).<\/p>\n<p>Robert Martin \u2014 zn\u00e1m\u00fd tak\u00e9 jako Uncle Bob \u2014 pracuje v oblasti programov\u00e1n\u00ed, r\u016fzn\u00fdch syst\u00e9m\u016f (od webov\u00fdch slu\u017eeb po embed syst\u00e9my) od roku 1970. Je technick\u00fdm konzultantem a architektem, psal do r\u016fzn\u00fdch technick\u00fdch \u010dasopis\u016f, s\u00e1m je velmi zku\u0161en\u00fd program\u00e1tor a \u010dlov\u011bk, kter\u00fd hr\u00e1l jednu z kl\u00ed\u010dov\u00fdch rol\u00ed p\u0159i vytv\u00e1\u0159en\u00ed zn\u00e1m\u00fdch princip\u016f SOLID (lze \u0159\u00edci, \u017ee je tv\u016frcem). Tak\u00e9 bych cht\u011bl dodat, \u017ee mi tuto knihu doporu\u010dil m\u016fj t\u00fdmov\u00fd vedouc\u00ed s v\u00edce ne\u017e 15 lety zku\u0161enost\u00ed.<\/p>\n<h2>O knize<\/h2>\n<p><\/p>\n<h3>Z\u00e1vislosti<\/h3>\n<p>\nP\u0159ed p\u0159e\u010dten\u00edm knihy jsem \u010detl spoustu \u010dl\u00e1nk\u016f na stejn\u00e9m Habr\u00e9, kde se objevovalo slovo \u201ez\u00e1vislost\u201c. Co to je, kdo na kom z\u00e1vis\u00ed, co konkr\u00e9tn\u011b znamen\u00e1 \u201ez\u00e1viset\u201c, a jak m\u016f\u017ee n\u011bjak\u00e1 t\u0159\u00edda z\u00e1viset na n\u011bkom? <\/p>\n<p>A tak p\u0159i \u010dten\u00ed knihy jsem si osvojil dv\u011b v\u011bci:<\/p>\n<p>Z\u00e1vislost \u2014 to je term\u00edn, kter\u00fd znamen\u00e1, \u017ee n\u011bjak\u00e1 t\u0159\u00edda (komponent, slu\u017eba) v\u00ed o n\u011bjak\u00e9 jin\u00e9 t\u0159\u00edd\u011b (komponent\u011b, slu\u017eb\u011b), a toto v\u011bd\u011bn\u00ed na \u00farovni k\u00f3du je ur\u010deno (te\u010f m\u011b ch\u00e1pou jazyk\u00e1\u0159i jako Java, C# nebo C) ur\u010dit\u00fdm importem namespace. Jin\u00fdmi slovy: m\u00e1te t\u0159\u00eddu A s namespace Default.Classes a t\u0159\u00eddu B Another.Classes. Tak\u017ee pokud v k\u00f3du t\u0159\u00eddy A bude pou\u017eit\u00ed using Another.Classes; \u2014 znamen\u00e1 to, \u017ee t\u0159\u00edda A z\u00e1vis\u00ed na t\u0159\u00edd\u011b B. <br \/>\nAbychom pochopili na sch\u00e9matu, kde je z\u00e1visl\u00e1 t\u0159\u00edda a kde nen\u00ed \u2014 pod\u00edvejte se na sm\u011br \u0161ipky: v 1) \u0161ipka bude ukazovat od t\u0159\u00eddy A sm\u011brem k t\u0159\u00edd\u011b B. To znamen\u00e1, \u017ee t\u0159\u00edda B je nez\u00e1vislej\u0161\u00ed ne\u017e t\u0159\u00edda A. A zm\u011bny v t\u0159\u00edd\u011b A nezp\u016fsob\u00ed \u017e\u00e1dnou '\u0161kodu' t\u0159\u00edd\u011b B.<\/p>\n<p><img decoding=\"async\" alt=\"Stru\u010dn\u011b o hlavn\u00edm: 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>\nJedn\u00edm z hlavn\u00edch d\u016fvod\u016f, pro\u010d jsem si tuto knihu p\u0159e\u010detl \u2014 je to vysv\u011btlen\u00ed princip\u016f SOLID z prim\u00e1rn\u00edho zdroje, proto\u017ee str\u00fdc Bob tyto principy vyv\u00edjel a lze \u0159\u00edci, \u017ee d\u00edky n\u011bmu sly\u0161\u00edme toto ozna\u010den\u00ed \u2014 SOLID.<br \/>\nPro ty, kte\u0159\u00ed nejsou obezn\u00e1meni \u2014 tato pravidla doporu\u010duj\u00ed navrhovat aplikace podle 5 princip\u016f:<\/p>\n<p>S \u2014 SRP (Princip jedin\u00e9 odpov\u011bdnosti)<br \/>\nO \u2014 OCP (Princip otev\u0159enosti a uzav\u0159enosti)<br \/>\nL \u2014 LSP (Liskov\u016fv substitu\u010dn\u00ed princip)<br \/>\nI \u2014 ISP (Princip segregace rozhran\u00ed)<br \/>\nD \u2014 DIP (Princip inverze z\u00e1vislost\u00ed)<\/p>\n<p>V\u0161echny tyto principy lze aplikovat na \u00farovni t\u0159\u00edd a objekt\u016f, na \u00farovni modul\u016f a komponent a na \u00farovni vrstev (slu\u017eeb).<\/p>\n<p>Pokud se domn\u00edv\u00e1te, \u017ee Princip jedin\u00e9 odpov\u011bdnosti \u0159\u00edk\u00e1, \u017ee t\u0159\u00edda nebo modul by m\u011bly d\u011blat pouze jednu v\u011bc \u2014 m\u011bli byste si p\u0159e\u010d\u00edst alespo\u0148 kapitolu o SOLID. Nebo\u0165 ta definice, kterou jsme uvedli v\u00fd\u0161e \u2014 je d\u016fsledkem, ale nikoli definic\u00ed samotn\u00e9ho principu.<\/p>\n<h3>O Inverzi z\u00e1vislost\u00ed<\/h3>\n<p>\nZvl\u00e1\u0161tn\u00ed pozornost bych r\u00e1d v\u011bnoval vysv\u011btlen\u00ed Principu inverze z\u00e1vislost\u00ed (ten, co je D z SOLID). B\u011bhem \u010dten\u00ed knihy jsem si uv\u011bdomoval, \u017ee to nen\u00ed jen princip, ale tak\u00e9 mechanismus a n\u00e1stroj, s jeho\u017e pomoc\u00ed m\u016f\u017eete m\u011bnit sm\u011bry sv\u00fdch z\u00e1vislost\u00ed a ud\u011blat nap\u0159\u00edklad obchodn\u00ed logiku (DOMAIN) nez\u00e1vislou na podrobnostech implementace vrstvy p\u0159\u00edstupu k dat\u016fm (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Stru\u010dn\u011b o hlavn\u00edm: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA\u010dkoliv samotn\u00fd princip v SOLID znamen\u00e1 n\u011bco trochu jin\u00e9ho ne\u017e mechanismus, tento mechanismus se pou\u017e\u00edv\u00e1 v cel\u00e9 knize a je to jeden z hlavn\u00edch metod, jak inverzovat a m\u011bnit sm\u011bry va\u0161ich z\u00e1vislost\u00ed, kter\u00fd se mimochodem pou\u017e\u00edv\u00e1 v DDD.<\/p>\n<h3>O p\u0159ijet\u00ed architektonick\u00fdch rozhodnut\u00ed<\/h3>\n<p>\nVelmi \u010dasto se v knize zmi\u0148uje princip p\u0159ijet\u00ed d\u016fle\u017eit\u00fdch architektonick\u00fdch rozhodnut\u00ed: jakou datab\u00e1zi pou\u017e\u00edt, jak\u00fd r\u00e1mec pou\u017e\u00edt, kterou knihovnu p\u0159ipojit, co pou\u017e\u00edt jako vyhled\u00e1va\u010d atd.<\/p>\n<p>Autor se domn\u00edv\u00e1, \u017ee byste m\u011bli CO NEJM\u00c9N\u011a p\u0159ij\u00edmat tohoto druhu rozhodnut\u00ed. Nebo\u0165 po\u017eadavky se mohou m\u011bnit, omezen\u00ed v\u00fdkonu tak\u00e9, a samotn\u00e1 behavior\u00e1ln\u00ed slo\u017eka m\u00e1 tendenci se m\u011bnit. B\u011bhem v\u00fdvoje se m\u016f\u017ee n\u011bjak\u00e9 rozhodnut\u00ed zd\u00e1t m\u00e9n\u011b efektivn\u00ed ne\u017e jin\u00e9, m\u00e9n\u011b pohodln\u00e9 ne\u017e jin\u00e9. A s\u00edla va\u0161\u00ed architektury ur\u010d\u00ed, jak rychle a bezbolestn\u011b budete schopni nahradit jednu technologii jinou (o tom mimochodem tvrd\u00ed OCP).<\/p>\n<p>Nap\u0159\u00edklad, n\u00e1hle se rozhodnete pou\u017e\u00edt m\u00edsto Postgresql MongoDB, nebo dokonce soubory, nebo pou\u017e\u00edt mockovan\u00e1 data, s nimi\u017e budou operace prov\u00e1d\u011bny v pam\u011bti. A za ur\u010dit\u00fdch podm\u00ednek \u2014 to m\u016f\u017ee vy\u017eadovat p\u0159eps\u00e1n\u00ed t\u00e9m\u011b\u0159 cel\u00e9 logiky. <\/p>\n<p>Aby se takov\u00e9 situace nevyskytovaly, m\u016f\u017eeme vyu\u017e\u00edt ur\u010dit\u00e9 mechanismy, kter\u00e9 co nejv\u00edce odd\u00e1l\u00ed \u010das rozhodov\u00e1n\u00ed. Jedn\u00edm z t\u011bchto mechanism\u016f je abstrakce.<\/p>\n<h3>Odkazy na DDD<\/h3>\n<p>\nDDD \u2013 Domain Driven Design \u2013 je p\u0159\u00edstup k v\u00fdvoji slu\u017eeb s komplexn\u00ed obchodn\u00ed logikou, kritickou v\u016f\u010di zm\u011bn\u00e1m, zam\u011b\u0159en\u00fd na maxim\u00e1ln\u00ed pochopen\u00ed vedouc\u00edmi pracovn\u00edky projektu (PM, prodejn\u00ed mana\u017ee\u0159i atd.) a b\u011b\u017en\u00fdmi pracovn\u00edky. To znamen\u00e1, \u017ee mezi v\u0161emi \u010dleny projektu existuje ubiquitous language, a ka\u017ed\u00fd rozum\u00ed ostatn\u00edm, a aby v\u0161ichni p\u0159em\u00fd\u0161leli v jednom dom\u00e9n\u011b se stejn\u00fdmi obchodn\u00edmi pravidly.<\/p>\n<p>Pokud jste zast\u00e1ncem DDD, nebo chcete b\u00fdt takov\u00fdm, nebo n\u011b\u010demu v tom nerozum\u00edte, ale chcete porozum\u011bt \u2013 kniha je povinn\u00e1 \u010detba, zejm\u00e9na druh\u00e1 \u010d\u00e1st knihy.<\/p>\n<p>Zde autor vysv\u011btluje existenci Dependency Rule a pro\u010d, pokud se j\u00ed budete \u0159\u00eddit \u2013 budete stav\u011bt spr\u00e1vnou architekturu aplikace. Pro\u010d by z\u00e1vislosti m\u011bly sm\u011b\u0159ovat k High Policy komponent\u016fm, pro\u010d. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/cs\/domain\/\"   title=\"dom\u00e9na\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">dom\u00e9na<\/a> (High Policy komponent) by m\u011bl b\u00fdt nez\u00e1visl\u00fd na infrastruktu\u0159e a jak to usnadn\u00ed nasazen\u00ed a v\u00fdvoj.<\/p>\n<p><img decoding=\"async\" alt=\"Stru\u010dn\u011b o hlavn\u00edm: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstrakce<\/h3>\n<p>\nPan Rob tak\u00e9 hovo\u0159\u00ed o tom, jak detaily implementace mohou po\u0161kodit v\u00e1\u0161 syst\u00e9m a neumo\u017enit mu evolvovat bez bolesti v budoucnu.<\/p>\n<p>Pamatujte!<br \/>\nDB je detail implementace.<br \/>\nKlienti (Web, Mobiln\u00ed atd.) jsou detaily implementace.<br \/>\nFrameworky jsou detaily implementace.<\/p>\n<p>Je t\u0159eba se od toho v\u0161eho co nejv\u00edce abstrahovat a nez\u00e1viset na tom, vyu\u017e\u00edvaj\u00edc\u00ed v\u00fd\u0161e popsanou Dependency Inversion s rozhran\u00edmi a abstrakcemi, Dependency Rule a dal\u0161\u00ed mechanismy.<\/p>\n<h3>Metody budov\u00e1n\u00ed modul\u016f<\/h3>\n<p>\nTato \u010d\u00e1st se mi obzvl\u00e1\u0161\u0165 l\u00edbila jako v\u00fdvoj\u00e1\u0159i slu\u017eeb na ASP.NET CORE. Nebo\u0165 zde se hovo\u0159\u00ed o metodologi\u00edch budov\u00e1n\u00ed jednotn\u00e9 architektury slu\u017eby z hotov\u00fdch komponent\u016f. <\/p>\n<p>Robert popsal \u010dty\u0159i mo\u017en\u00e9 sch\u00e9mata rozd\u011blen\u00ed vrstev.<\/p>\n<p>D\u00e1val najevo, pro\u010d je tak \u010dasto pou\u017e\u00edvan\u00fd mechanismus t\u0159\u00edvrstv\u00e9 architektury: UI (kontrolery), Slu\u017eby (Dom\u00e9na), DAL (Datab\u00e1ze) \u2013 pom\u011brn\u011b slab\u00fd v porovn\u00e1n\u00ed s ostatn\u00edmi. Nevid\u011bl jsem moc projekt\u016f, ale v ka\u017ed\u00e9m, nap\u0159\u00edklad mikroservisu, se na backendu pou\u017e\u00edv\u00e1 pr\u00e1v\u011b t\u0159\u00edvrstv\u00e1 architektura. <\/p>\n<p>Tak\u00e9 se \u010dasto pou\u017e\u00edv\u00e1 architektura jeden komponent - jeden servis. Celkov\u011b jsou ob\u011b mo\u017enosti dobr\u00e9, ale maj\u00ed spoustu nev\u00fdhod ve srovn\u00e1n\u00ed s t\u00edm, jak je postavena architektura p\u0159i pou\u017eit\u00ed DDD, zejm\u00e9na u syst\u00e9m\u016f, kter\u00e9 jsou citliv\u00e9 na zm\u011bny a slo\u017eit\u00fdch slu\u017eeb.<\/p>\n<p>Celkov\u011b skon\u010dil tento p\u0159ehled knihy. Kniha se mi opravdu l\u00edbila, nelituji \u010dasu str\u00e1ven\u00e9ho \u010dten\u00edm, d\u011bkuji autorovi. V\u00e1m, mil\u00ed \u010dten\u00e1\u0159i, d\u011bkuji za pozornost, nehodno\u0165te m\u011b p\u0159\u00edli\u0161 p\u0159\u00edsn\u011b \u2014 tento p\u0159\u00edsp\u011bvek je zalo\u017een na m\u00fdch dojmech z knihy a osobn\u00edm nad\u0161en\u00ed.<br \/>\n<br \/>Zdroj: <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.3 - 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\/cs\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Kr\u00e1tce o hlavn\u00edm: Clean Architecture, Robert C. Martin | ProHoster","description":"Toto bude vypr\u00e1v\u011bn\u00ed o dojmech z knihy a tak\u00e9 budou probr\u00e1ny n\u011bkter\u00e9 pojmy a znalosti, kter\u00e9 byly d\u00edky t\u00e9to knize prozkoum\u00e1ny. Architektura M\u016f\u017eete, \u010dten\u00e1\u0159i t\u00e9to publikace, poskytnout.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}