{"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\/pl\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Kr\u00f3tko o najwa\u017cniejszym: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>To b\u0119dzie opowie\u015b\u0107 o wra\u017ceniach z ksi\u0105\u017cki, a tak\u017ce zostan\u0105 om\u00f3wione niekt\u00f3re poj\u0119cia i wiedza, kt\u00f3re dzi\u0119ki tej ksi\u0105\u017cce zosta\u0142y nabyte.<\/p>\n<h3>Architektura<\/h3>\n<p>\nCzy mo\u017cesz, czytaj\u0105c ten post, udzieli\u0107 wyra\u017anej odpowiedzi na pytanie, czym jest architektura? Czym jest architektura w kontek\u015bcie programowania i projektowania? Jak\u0105 rol\u0119 odgrywa? W tym terminie jest wiele niejasno\u015bci. I wydaje si\u0119, \u017ce wszystko jest jasne, ale jako\u015b abstrakcyjnie i bez dok\u0142adno\u015bci. Martin uwa\u017ca, i ja si\u0119 zgadzam, \u017ce aplikacja ma dwie sk\u0142adowe: <\/p>\n<ol>\n<li>Zachowanie (behavior) \u2014 funkcje i zadania, kt\u00f3re program (komponent, serwis) wykonuje.<\/li>\n<li>Architektura \u2014 ten termin w wi\u0119kszym stopniu dotyczy zmiany aplikacji.<\/li>\n<\/ol>\n<p>\nAle nawet je\u015bli aplikacja bardzo dobrze wykonuje zadanie, kt\u00f3re powinna, to wcale nie oznacza, \u017ce ma dobr\u0105 architektur\u0119. Architektura nie dotyczy zachowania aplikacji. Architektura dotyczy \u0142atwo\u015bci wprowadzania zmian, architektura dotyczy \u0142atwo\u015bci wdra\u017cania, architektura dotyczy niezale\u017cno\u015bci w rozwoju. Architektura dotyczy szybko\u015bci, z jak\u0105 nowe osoby w zespole mog\u0105 zrozumie\u0107 projekt.<\/p>\n<p>I oto jak budowa\u0107 t\u0119 architektur\u0119, jak pozby\u0107 si\u0119 b\u00f3lu g\u0142owy przy ma\u0142ych zmianach wymaga\u0144 od PM-a lub interesariusza: o tym opowie ta ksi\u0105\u017cka.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>O autorach<\/h3>\n<p>\nZanim powiem cokolwiek o tej ksi\u0105\u017cce, chcia\u0142bym powiedzie\u0107 troch\u0119 o sobie.<br \/>\nObecnie jestem Strong Junior Developer, specjalizuj\u0105cym si\u0119 w tworzeniu us\u0142ug za pomoc\u0105 ASP .NET CORE.<\/p>\n<p>Ju\u017c od roku pracuj\u0119 w jednej 'galerce', i wydaje mi si\u0119, \u017ce powoli sobie radz\u0119.<\/p>\n<p>T\u0119 ksi\u0105\u017ck\u0119 przeczyta\u0142em ju\u017c dwa razy i gor\u0105co j\u0105 polecam wszystkim:<\/p>\n<ul>\n<li>programistom system\u00f3w embedded;<\/li>\n<li>front-endowcom;<\/li>\n<li>back-endowcom;<\/li>\n<li>a nawet devopsom.<\/li>\n<\/ul>\n<p>\nOg\u00f3lnie wszystkim, kt\u00f3rzy s\u0105 w jaki\u015b spos\u00f3b zwi\u0105zani z rozwojem oprogramowania, mam na my\u015bli bezpo\u015bredni rozw\u00f3j r\u00f3\u017cnych system\u00f3w, nie uwzgl\u0119dniaj\u0105c tutaj mened\u017cer\u00f3w sprzeda\u017cy i PM-\u00f3w (cho\u0107 te\u017c by\u0142oby przydatnie wiedzie\u0107, dlaczego deweloperzy cz\u0119sto sp\u0119dzaj\u0105 dwa razy wi\u0119cej czasu na zadaniu), polecam przeczyta\u0107 t\u0119 ksi\u0105\u017ck\u0119.<br \/>\nA teraz spr\u00f3buj\u0119 uzasadni\u0107, dlaczego tak my\u015bl\u0119.<\/p>\n<p>Troch\u0119 o autorze tej ksi\u0105\u017cki (poniewa\u017c autorytet pisz\u0105cego ma dla mnie du\u017ce znaczenie). My\u015bl\u0119, \u017ce mnie zrozumiesz, cho\u0107 to nie zawsze jest w\u0142a\u015bciwe, ale je\u015bli co\u015b m\u00f3wi autorytet w danej dziedzinie \u2013 znacznie bardziej ufasz temu, co on m\u00f3wi. Na przyk\u0142ad, my\u015bl\u0119, \u017ce bardziej uwierzysz diagnozie postawionej przez lekarza ni\u017c przez jak\u0105kolwiek osob\u0119 z t\u0142umu (kt\u00f3ra wyszuka\u0142a objawy).<\/p>\n<p>Robert Martin, znany r\u00f3wnie\u017c jako Uncle Bob (wujek Bob) \u2013 dzia\u0142a w dziedzinie programowania, w r\u00f3\u017cnych systemach (od us\u0142ug webowych po systemy embedded) od 1970 roku. Jest technicznym konsultantem i architektem, pisa\u0142 do r\u00f3\u017cnych czasopism technicznych, sam w sobie jest bardzo do\u015bwiadczonym programist\u0105, a tak\u017ce osob\u0105, kt\u00f3ra odegra\u0142a jedn\u0105 z kluczowych r\u00f3l w tworzeniu znanych zasad SOLID (mo\u017cna powiedzie\u0107, \u017ce jest ich tw\u00f3rc\u0105). Chc\u0119 r\u00f3wnie\u017c doda\u0107, \u017ce t\u0119 ksi\u0105\u017ck\u0119 poleci\u0142 mi m\u00f3j team leader z ponad 15-letnim do\u015bwiadczeniem.<\/p>\n<h2>O ksi\u0105\u017cce<\/h2>\n<p><\/p>\n<h3>Zale\u017cno\u015bci<\/h3>\n<p>\nPrzed przeczytaniem ksi\u0105\u017cki przeczyta\u0142em wiele artyku\u0142\u00f3w na tym samym Habrze, gdzie pojawia\u0142o si\u0119 s\u0142owo \u201ezale\u017cno\u015b\u0107\u201d. Co to jest, kto od kogo zale\u017cy, co konkretnie znaczy \u201ezale\u017ce\u0107\u201d i jak jaki\u015b klas mo\u017ce zale\u017ce\u0107 od kogo\u015b? <\/p>\n<p>I w miar\u0119 czytania ksi\u0105\u017cki zrozumia\u0142em dwie rzeczy:<\/p>\n<p>Zale\u017cno\u015b\u0107 \u2013 to termin oznaczaj\u0105cy, \u017ce jaki\u015b klas (komponent, serwis) zna inny klas (komponent, serwis), a ta wiedza na poziomie kodu jest okre\u015blona (teraz programi\u015bci Java, C# i C b\u0119d\u0105 mnie rozumie\u0107) okre\u015blonym importem namespace. Innymi s\u0142owy: macie klas A z namespace Default.Classes i klas B Another.Classes. Je\u015bli w kodzie \u017ar\u00f3d\u0142owym klas A pojawi si\u0119 using Another.Classes; \u2013 oznacza to, \u017ce klas A zale\u017cy od klas B. <br \/>\nAby zrozumie\u0107 na schemacie, gdzie jest klas zale\u017cny, a gdzie nie \u2013 sp\u00f3jrzcie na kierunek strza\u0142ki: w 1) strza\u0142ka b\u0119dzie wskazywa\u0107 od klas A w kierunku klas B. Oznacza to, \u017ce klas B jest bardziej niezale\u017cny ni\u017c klas A. I zmiany w klas A nie wyrz\u0105dz\u0105 \u017cadnej \u201eszkody\u201d klasowi B.<\/p>\n<p><img decoding=\"async\" alt=\"Kr\u00f3tko o najwa\u017cniejszym: 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>\nJednym z g\u0142\u00f3wnych powod\u00f3w, kt\u00f3re sk\u0142oni\u0142y mnie do przeczytania tej ksi\u0105\u017cki \u2013 jest wyja\u015bnienie zasad SOLID z pierwszej r\u0119ki, poniewa\u017c wujek Rob opracowa\u0142 te zasady i mo\u017cna powiedzie\u0107, \u017ce to dzi\u0119ki niemu s\u0142yszymy t\u0119 nazw\u0119 \u2013 SOLID.<br \/>\nDla tych, kt\u00f3rzy nie wiedz\u0105 \u2014 te zasady m\u00f3wi\u0105 i sugeruj\u0105, aby projektowa\u0107 swoje aplikacje zgodnie z 5 zasadami:<\/p>\n<p>S \u2014 SRP (Zasada pojedynczej odpowiedzialno\u015bci)<br \/>\nO \u2014 OCP (Zasada otwarte-zamkni\u0119te)<br \/>\nL \u2014 LSP (Zasada substytucji Liskova)<br \/>\nI \u2014 ISP (Zasada segregacji interfejs\u00f3w)<br \/>\nD \u2014 DIP (Zasada inwersji zale\u017cno\u015bci)<\/p>\n<p>Wszystkie te zasady mog\u0105 by\u0107 stosowane na poziomie klas i obiekt\u00f3w, na poziomie modu\u0142\u00f3w i komponent\u00f3w oraz na poziomie warstw (serwis\u00f3w).<\/p>\n<p>Je\u015bli uwa\u017casz, \u017ce Zasada pojedynczej odpowiedzialno\u015bci oznacza, \u017ce klasa lub modu\u0142 powinny robi\u0107 tylko jedn\u0105 rzecz \u2014 koniecznie musisz przeczyta\u0107 cho\u0107by rozdzia\u0142 na temat SOLID. Poniewa\u017c ta definicja, kt\u00f3ra zosta\u0142a podana powy\u017cej, to konsekwencja, a nie definicja samej zasady.<\/p>\n<h3>O inwersji zale\u017cno\u015bci<\/h3>\n<p>\nSzczeg\u00f3ln\u0105 uwag\u0119 chc\u0119 zwr\u00f3ci\u0107 na wyja\u015bnienie Zasady inwersji zale\u017cno\u015bci (tej, kt\u00f3ra jest D w SOLID). W trakcie czytania ksi\u0105\u017cki zrozumia\u0142em, \u017ce to nie tylko zasada, ale tak\u017ce mechanizm i narz\u0119dzie, dzi\u0119ki kt\u00f3remu mo\u017cesz zmienia\u0107 kierunek swoich zale\u017cno\u015bci i sprawi\u0107, \u017ce np. logika biznesowa (DOMENA) b\u0119dzie niezale\u017cna od detali implementacji warstwy dost\u0119pu do danych (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Kr\u00f3tko o najwa\u017cniejszym: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nChocia\u017c sama zasada, obok innych w SOLID, oznacza nieco co\u015b innego ni\u017c mechanizm, sam mechanizm jest stosowany przez ca\u0142\u0105 ksi\u0105\u017ck\u0119 i jest jednym z podstawowych metod inwersji oraz zmiany kierunku swoich zale\u017cno\u015bci, kt\u00f3ry, nota bene, jest u\u017cywany w DDD.<\/p>\n<h3>O podejmowaniu decyzji architektonicznych<\/h3>\n<p>\nBardzo cz\u0119sto w ksi\u0105\u017cce b\u0119dzie wspomniana zasada dotycz\u0105ca podejmowania wa\u017cnych decyzji architektonicznych: o tym, jak\u0105 baz\u0119 danych zastosowa\u0107, jaki framework u\u017cy\u0107, jak\u0105 bibliotek\u0119 pod\u0142\u0105czy\u0107, co wykorzysta\u0107 jako silnik wyszukiwania itd.<\/p>\n<p>Ot\u00f3\u017c autor uwa\u017ca: powiniene\u015b jak najmniej podejmowa\u0107 tego typu decyzji. Poniewa\u017c wymagania mog\u0105 si\u0119 zmienia\u0107, ograniczenia dotycz\u0105ce wydajno\u015bci r\u00f3wnie\u017c, a sama sk\u0142adnik behawioralny ma tendencj\u0119 do zmiany. W trakcie rozwoju jakie\u015b rozwi\u0105zanie mo\u017ce okaza\u0107 si\u0119 mniej efektywne ni\u017c inne, mniej wygodne ni\u017c inne. A si\u0142a twojej architektury b\u0119dzie okre\u015bla\u0107, jak szybko i bezbole\u015bnie b\u0119dziesz w stanie zamieni\u0107 jedn\u0105 technologi\u0119 na drug\u0105 (o czym zreszt\u0105 wspomina OCP).<\/p>\n<p>Na przyk\u0142ad, nagle postanowisz u\u017cy\u0107 zamiast Postgresql MongoDb, lub w og\u00f3le plik\u00f3w, lub u\u017cy\u0107 danych mockowanych, operacje na kt\u00f3rych b\u0119d\u0105 przeprowadzane w pami\u0119ci. A w niekt\u00f3rych warunkach \u2014 mo\u017ce to wymusi\u0107 przepisanie niemal ca\u0142ej logiki. <\/p>\n<p>Aby unikn\u0105\u0107 takich sytuacji, mo\u017cemy zastosowa\u0107 pewne mechanizmy, kt\u00f3re znacznie oddal\u0105 czas podejmowania decyzji. Jednym z tych mechanizm\u00f3w jest abstrakcja.<\/p>\n<h3>Wzmianki o DDD<\/h3>\n<p>\nDDD \u2014 Domain Driven Design \u2014 to podej\u015bcie do tworzenia us\u0142ug z\u0142o\u017conych z bogat\u0105 logik\u0105 biznesow\u0105, krytyczn\u0105 na zmiany, kt\u00f3re ma na celu maksymalne zrozumienie ze strony kierownictwa projektu (PM-\u00f3w, mened\u017cer\u00f3w sprzeda\u017cy itp.) przez zwyk\u0142ych pracownik\u00f3w. To znaczy, \u017ce pomi\u0119dzy wszystkimi cz\u0142onkami projektu powinien istnie\u0107 j\u0119zyk wsp\u00f3lny, aby ka\u017cdy m\u00f3g\u0142 zrozumie\u0107 drugiego i aby wszyscy my\u015bleli w jednym obszarze z tymi samymi zasadami biznesowymi.<\/p>\n<p>Je\u015bli jeste\u015b zwolennikiem DDD, chcesz nim by\u0107 lub nie rozumiesz tego, ale chcesz zrozumie\u0107 \u2014 ta ksi\u0105\u017cka jest konieczna do przeczytania, zw\u0142aszcza druga cz\u0119\u015b\u0107 ksi\u0105\u017cki.<\/p>\n<p>Tutaj autor wyja\u015bnia istniej\u0105cy Zasady Zale\u017cno\u015bci (Dependency Rule) i dlaczego, stosuj\u0105c go, zbudujesz poprawn\u0105 architektur\u0119 aplikacji. Dlaczego zale\u017cno\u015bci powinny kierowa\u0107 si\u0119 w stron\u0119 komponent\u00f3w wysokiego poziomu. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/domain\/\"   title=\"domen\u0119\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">domen\u0119<\/a> (Komponent wysokiego poziomu) powinien by\u0107 niezale\u017cny od infrastruktury i jak to u\u0142atwi ci wdra\u017canie i rozw\u00f3j.<\/p>\n<p><img decoding=\"async\" alt=\"Kr\u00f3tko o najwa\u017cniejszym: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstrakcjonowanie<\/h3>\n<p>\nWujek Rob opowiada r\u00f3wnie\u017c o tym, jak szczeg\u00f3\u0142y realizacji mog\u0105 zaszkodzi\u0107 twojemu systemowi i uniemo\u017cliwi\u0107 mu dalsz\u0105 ewolucj\u0119 bez b\u00f3lu.<\/p>\n<p>Pami\u0119taj!<br \/>\nBaza danych to detal realizacji.<br \/>\nKlienci (Web, Mobile, itp.) to detale realizacji.<br \/>\nFrameworki to szczeg\u00f3\u0142y realizacji.<\/p>\n<p>Od tego wszystkiego trzeba maksymalnie si\u0119 abstrahowa\u0107 i nie by\u0107 od tego zale\u017cnym, stosuj\u0105c opisany wy\u017cej Zasada Inwersji Zale\u017cno\u015bci z interfejsami i abstrakcjami, Zasady Zale\u017cno\u015bci i inne mechanizmy.<\/p>\n<h3>Metody budowy modu\u0142\u00f3w<\/h3>\n<p>\nTen rozdzia\u0142 szczeg\u00f3lnie mi si\u0119 podoba\u0142 jako deweloperowi us\u0142ug w ASP .NET CORE. M\u00f3wi si\u0119 w nim o metodach budowy jednolitej architektury us\u0142ugi z gotowych komponent\u00f3w. <\/p>\n<p>Robert opisa\u0142 4 mo\u017cliwe schematy podzia\u0142u warstw.<\/p>\n<p>Daje do zrozumienia, dlaczego tak cz\u0119sto stosowany mechanizm architektury trzywarstwowej: UI (kontrolery), Us\u0142ugi (Domena), DAL (Baza Danych) \u2014 jest znacznie gorszy w por\u00f3wnaniu do innych. Widzia\u0142em niewiele projekt\u00f3w, ale w ka\u017cdym, na przyk\u0142ad w mikroserwisie, na backendzie stosuje si\u0119 w\u0142a\u015bnie architektur\u0119 trzywarstwow\u0105. <\/p>\n<p>Cz\u0119sto stosuje si\u0119 architektur\u0119 jeden-komponent-jeden-serwis. Og\u00f3lnie obie s\u0105 w porz\u0105dku, ale ta ma do\u015b\u0107 wiele wad w por\u00f3wnaniu na przyk\u0142ad do architektury opartej na DDD, szczeg\u00f3lnie w przypadku us\u0142ug krytycznych dla zmian i z\u0142o\u017conych.<\/p>\n<p>I oto ko\u0144czy si\u0119 przegl\u0105d tej ksi\u0105\u017cki. Sama ksi\u0105\u017cka bardzo mi si\u0119 podoba\u0142a, nie \u017ca\u0142uj\u0119 przeczytania, dzi\u0119kuj\u0119 autorowi. Drogi Czytelniku, dzi\u0119kuj\u0119 za uwag\u0119, nie oceniajcie surowo \u2013 ta publikacja jest oparta na wra\u017ceniach z ksi\u0105\u017cki oraz moim osobistym entuzjazmie.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47 Kr\u00f3tko o najwa\u017cniejszych sprawach: Clean Architecture, Robert C. Martin | ProHoster","description":"B\u0119dzie to opowie\u015b\u0107 o wra\u017ceniach z ksi\u0105\u017cki, a tak\u017ce zostan\u0105 om\u00f3wione niekt\u00f3re poj\u0119cia i wiedza, kt\u00f3re dzi\u0119ki tej ksi\u0105\u017cce zosta\u0142y przyswojone. Architektura. Czy mo\u017cesz, czytaj\u0105c t\u0119 publikacj\u0119, wyrazi\u0107 swoje uwagi?","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}