{"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\/sv\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Kort om det viktigaste: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Detta kommer att vara en ber\u00e4ttelse om mina intryck av boken, och n\u00e5gra begrepp och kunskaper som har l\u00e4rt sig tack vare den.<\/p>\n<h3>Arkitektur<\/h3>\n<p>\nKan du, n\u00e4r du l\u00e4ser den h\u00e4r publikationen, ge ett klart svar p\u00e5 fr\u00e5gan, vad \u00e4r arkitektur? Vad \u00e4r arkitektur i sammanhanget av programmering och design? Vilken roll spelar den? Det finns ganska m\u00e5nga oklarheter kring denna term. Det verkar som att allt \u00e4r f\u00f6rst\u00e5eligt, men p\u00e5 n\u00e5got s\u00e4tt abstrakt och utan precision. Martin anser, och jag inst\u00e4mmer med honom, att en applikation har tv\u00e5 komponenter: <\/p>\n<ol>\n<li>Beteende (behavior) \u2013 de funktioner och uppgifter som programmet (komponenten, tj\u00e4nsten) utf\u00f6r.<\/li>\n<li>Arkitektur \u2013 denna term handlar i h\u00f6g grad om att f\u00f6r\u00e4ndra applikationen.<\/li>\n<\/ol>\n<p>\nMen \u00e4ven om applikationen mycket v\u00e4l utf\u00f6r den uppgift den ska, betyder det inte att den har en bra arkitektur. Arkitektur handlar inte om en applikations beteende. Arkitektur handlar om enkelheten i att f\u00f6r\u00e4ndras, arkitektur handlar om enkelheten i att distribueras, arkitektur handlar om oberoende utveckling. Arkitektur handlar om hastigheten med vilken en ny person i teamet f\u00f6rst\u00e5r.<\/p>\n<p>Och hur man bygger denna arkitektur, hur man slipper huvudv\u00e4rken vid sm\u00e5 f\u00f6r\u00e4ndringar av krav fr\u00e5n PM:en, eller fr\u00e5n intressenten: det \u00e4r vad boken kommer att ber\u00e4tta om.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Om f\u00f6rfattarna<\/h3>\n<p>\nInnan jag pratar mer om denna bok, vill jag s\u00e4ga lite om mig sj\u00e4lv.<br \/>\nJust nu \u00e4r jag en Strong Junior Developer, som specialiserar sig p\u00e5 att utveckla tj\u00e4nster med ASP .NET CORE.<\/p>\n<p>Jag har arbetat p\u00e5 en \"galleri\" i ett \u00e5r, och verkar s\u00e5 sm\u00e5tt klara av det.<\/p>\n<p>Jag har redan l\u00e4st denna bok tv\u00e5 g\u00e5nger, och jag rekommenderar l\u00e4sning till alla:<\/p>\n<ul>\n<li>utvecklare av embedded system;<\/li>\n<li>frontend-utvecklare;<\/li>\n<li>backend-utvecklare;<\/li>\n<li>och till och med DevOps.<\/li>\n<\/ul>\n<p>\nKort sagt, till alla som p\u00e5 n\u00e5got s\u00e4tt \u00e4r involverade i mjukvaruutveckling, h\u00e4r menar jag direkt utveckling av olika saker, vi tar inte med PM:er h\u00e4r (\u00e4ven om det ocks\u00e5 skulle vara nyttigt att veta varf\u00f6r devs ibland l\u00e4gger dubbelt s\u00e5 mycket tid p\u00e5 en uppgift), jag rekommenderar att l\u00e4sa denna bok.<br \/>\nOch nu ska jag f\u00f6rs\u00f6ka argumentera f\u00f6r varf\u00f6r jag tycker s\u00e5.<\/p>\n<p>Lite om f\u00f6rfattaren till den h\u00e4r boken (eftersom f\u00f6rfattarens auktoritet spelar en stor roll f\u00f6r mig). Jag tror att du f\u00f6rst\u00e5r mig, \u00e4ven om det inte alltid \u00e4r korrekt, men n\u00e4r en auktoritativ person inom sitt omr\u00e5de pratar \u2014 s\u00e5 ger det mycket mer f\u00f6rtroende f\u00f6r vad som s\u00e4gs. Till exempel, jag tror att du har st\u00f6rre tro p\u00e5 diagnosen som l\u00e4karen ger, \u00e4n p\u00e5 n\u00e5gon ok\u00e4nd person fr\u00e5n folkmassan (som har googlat symtom).<\/p>\n<p>Robert Martin \u2014 \u00e4ven k\u00e4nd som Uncle Bob \u2014 har arbetat inom programmering, inklusive olika system (fr\u00e5n webbtj\u00e4nster till inbyggda system), sedan 1970-talet. Han \u00e4r teknisk konsult och arkitekt, har skrivit f\u00f6r olika tekniska tidskrifter, och \u00e4r i grunden en mycket erfaren programmerare, och en person som spelade en nyckelroll i skapandet av de v\u00e4lk\u00e4nda SOLID-principerna (man kan s\u00e4ga att han \u00e4r skaparen). Jag vill ocks\u00e5 n\u00e4mna att denna bok rekommenderades av min teamledare med \u00f6ver 15 \u00e5rs erfarenhet.<\/p>\n<h2>Om boken<\/h2>\n<p><\/p>\n<h3>Beroenden<\/h3>\n<p>\nInnan jag l\u00e4ste boken, hade jag l\u00e4st en hel del artiklar p\u00e5 Habr\u00e9 d\u00e4r ordet \"beroende\" n\u00e4mndes. Vad inneb\u00e4r det, vem beror p\u00e5 vem, vad betyder det konkret att \"h\u00e4nga p\u00e5\", och hur kan en klass bero p\u00e5 n\u00e5gon annan? <\/p>\n<p>Och med tiden n\u00e4r jag l\u00e4ste boken ins\u00e5g jag tv\u00e5 punkter:<\/p>\n<p>Beroende \u2014 \u00e4r en term som inneb\u00e4r att en viss klass (komponent, tj\u00e4nst) k\u00e4nner till en annan klass (komponent, tj\u00e4nst), och denna kunskap definieras i koden (nu kommer Java- och C#-programmerare att f\u00f6rst\u00e5 mig) genom ett visst namnrymdimport. Med andra ord: om du har klass A med namnrymden Default.Classes och klass B med Another.Classes. S\u00e5 om det i k\u00e4llkoden f\u00f6r klass A st\u00e5r using Another.Classes; \u2014 betyder det att klass A \u00e4r beroende av klass B. <br \/>\nF\u00f6r att f\u00f6rst\u00e5 schemat, se p\u00e5 riktningen av pilen: i 1) kommer pilen att peka fr\u00e5n klass A mot klass B. Det betyder att klass B \u00e4r mer oberoende \u00e4n klass A. Och f\u00f6r\u00e4ndringar i klass A kommer inte att orsaka n\u00e5got \"skada\" f\u00f6r klass B.<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det viktigaste: 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>\nEn av de fr\u00e4msta anledningarna till att jag l\u00e4ste denna bok \u2014 \u00e4r f\u00f6rklaringen av SOLID-principerna fr\u00e5n f\u00f6rsta k\u00e4llan, eftersom farbror Rob utvecklade dessa principer och man kan s\u00e4ga att det \u00e4r tack vare honom som vi h\u00f6r detta namn \u2014 SOLID.<br \/>\nF\u00f6r dem som inte vet - dessa principer s\u00e4ger att man ska designa sina applikationer i enlighet med fem regler:<\/p>\n<p>S \u2014 SRP (Principen om enkel ansvarighet)<br \/>\nO \u2014 OCP (Principen om \u00f6ppen-st\u00e4ngdhet)<br \/>\nL \u2014 LSP (Liskovs substitutionsprincip)<br \/>\nI \u2014 ISP (Principen om gr\u00e4nssnittets segregations)<br \/>\nD \u2014 DIP (Principen om beroendeinversion)<\/p>\n<p>Alla dessa principer kan till\u00e4mpas p\u00e5 niv\u00e5er av klasser och objekt, p\u00e5 niv\u00e5er av moduler och komponenter, och p\u00e5 niv\u00e5er av lager (tj\u00e4nster).<\/p>\n<p>Om du tycker att principen om enkel ansvarighet handlar om att en klass eller modul bara ska g\u00f6ra en enda sak - d\u00e5 m\u00e5ste du l\u00e4sa \u00e5tminstone kapitlet om SOLID. F\u00f6r den definition som ges ovan \u00e4r en konsekvens, och inget annat \u00e4n sj\u00e4lva definitionen av principen.<\/p>\n<h3>Om beroendeinversion<\/h3>\n<p>\nJag vill s\u00e4rskilt p\u00e5peka f\u00f6rklaringen av principen om beroendeinversion (den som \u00e4r D i SOLID). Under l\u00e4sningen av boken ins\u00e5g jag att det inte bara \u00e4r en princip, utan ocks\u00e5 en mekanism och ett verktyg, med hj\u00e4lp av vilket du kan \u00e4ndra riktningen p\u00e5 dina beroenden och g\u00f6ra, till exempel, aff\u00e4rslogiken (DOM\u00c4N) oberoende av detaljerna i implementeringen av datatillg\u00e5ngslagret (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det viktigaste: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c4ven om sj\u00e4lva principen, tillsammans med de andra i SOLID, har en n\u00e5got annan inneb\u00f6rd \u00e4n mekanismen, s\u00e5 anv\u00e4nds mekanismen genom hela boken, och det \u00e4r en av de grundl\u00e4ggande metoderna f\u00f6r att invertera och \u00e4ndra riktningen p\u00e5 dina beroenden, som f\u00f6r \u00f6vrigt anv\u00e4nds i DDD.<\/p>\n<h3>Om beslut kring arkitektur<\/h3>\n<p>\nMycket ofta n\u00e4mner boken principen om att fatta viktiga arkitekturm\u00e4ssiga beslut: vilken databas man ska anv\u00e4nda, vilket ramverk man ska anv\u00e4nda, vilken bibliotek man ska koppla in, vilket man ska anv\u00e4nda som s\u00f6kmotor etc.<\/p>\n<p>S\u00e5 f\u00f6rfattaren anser: du ska F\u00d6RS\u00d6KA ATT MINIMERA dessa typer av beslut. Eftersom krav kan f\u00f6r\u00e4ndras, prestandabegr\u00e4nsningar kan ocks\u00e5 f\u00f6r\u00e4ndras, och den beteendem\u00e4ssiga komponenten har en tendens att f\u00f6r\u00e4ndras. Under utvecklingsprocessen kan ett beslut visa sig vara mindre effektivt \u00e4n ett annat, mindre bekv\u00e4mt \u00e4n ett annat. Och kraften i din arkitektur kommer att avg\u00f6ra hur snabbt och sm\u00e4rtfritt du kan byta en teknologi mot en annan (och detta bekr\u00e4ftar f\u00f6r \u00f6vrigt OCP).<\/p>\n<p>Till exempel, pl\u00f6tsligt best\u00e4mmer du dig f\u00f6r att anv\u00e4nda MongoDB ist\u00e4llet f\u00f6r PostgreSQL, eller \u00f6verhuvudtaget filer, eller anv\u00e4nda mockade data som operationerna k\u00f6rs i minnet. Och under vissa f\u00f6rh\u00e5llanden - detta kan tvinga dig att skriva om n\u00e4stan hela logiken. <\/p>\n<p>F\u00f6r att undvika s\u00e5dana situationer kan vi anv\u00e4nda vissa mekanismer som f\u00f6rflyttar beslutstiden s\u00e5 l\u00e5ngt bort som m\u00f6jligt. En av dessa mekanismer \u00e4r abstraktion.<\/p>\n<h3>Referenser till DDD<\/h3>\n<p>\nDDD \u2013 Domain Driven Design \u2013 \u00e4r en metod f\u00f6r att utveckla tj\u00e4nster med komplex aff\u00e4rslogik, kritisk f\u00f6r f\u00f6r\u00e4ndringar, som syftar till att maximera f\u00f6rst\u00e5elsen hos projektets ledande roller (PMs, f\u00f6rs\u00e4ljningschefer etc.) samt de ordinarie medlemmarna. Det handlar om att alla medlemmar i projektet ska ha ett ubiquitous language, s\u00e5 att varje person kan f\u00f6rst\u00e5 den andra och att alla t\u00e4nker inom samma dom\u00e4n med samma aff\u00e4rsregler.<\/p>\n<p>Om du \u00e4r en anh\u00e4ngare av DDD, eller vill bli en, eller om du inte f\u00f6rst\u00e5r det men vill f\u00f6rst\u00e5 \u2014 \u00e4r boken ett m\u00e5ste, s\u00e4rskilt den andra delen av boken.<\/p>\n<p>H\u00e4r f\u00f6rklarar f\u00f6rfattaren f\u00f6rekomsten av Dependency Rule, och varf\u00f6r, genom att f\u00f6lja den, kommer du att bygga en korrekt applikationsarkitektur. Varf\u00f6r beroenden b\u00f6r f\u00f6lja riktningen mot High Policy-komponenterna, varf\u00f6r <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/domain\/\"   title=\"dom\u00e4nen\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">dom\u00e4nen<\/a> (High Policy-komponent) b\u00f6r vara oberoende av infrastrukturen och hur detta kommer att f\u00f6renkla din distribution och utveckling.<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det viktigaste: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstraktion<\/h3>\n<p>\nFarbror Rob ber\u00e4ttar ocks\u00e5 om hur implementationsdetaljer kan skada ditt system och hindra det fr\u00e5n att utvecklas utan sm\u00e4rta senare.<\/p>\n<p>Kom ih\u00e5g!<br \/>\nDB \u00e4r en implementationsdetalj<br \/>\nKunder (Web, Mobile, etc) \u00e4r implementationsdetaljer<br \/>\nRamverk \u00e4r implementationsdetaljer<\/p>\n<p>Du b\u00f6r maximalt abstrahera fr\u00e5n allt detta och inte vara beroende, genom att anv\u00e4nda den ovan beskrivna Dependency Inversion med gr\u00e4nssnitt och abstraktioner, Dependency Rule och andra mekanismer.<\/p>\n<h3>Metoder f\u00f6r moduluppbyggnad<\/h3>\n<p>\nDetta avsnitt gillade jag extra mycket som utvecklare av tj\u00e4nster i ASP .NET CORE. H\u00e4r diskuteras metodologier f\u00f6r att bygga en enhetlig arkitektur f\u00f6r tj\u00e4nsten av f\u00e4rdiga komponenter. <\/p>\n<p>Robert beskrev fyra m\u00f6jliga scheman f\u00f6r uppdelning av lager.<\/p>\n<p>Han p\u00e5pekade varf\u00f6r den s\u00e5 ofta anv\u00e4nda mekanismen f\u00f6r tre-lagersarkitektur: UI (controllers), Tj\u00e4nster (Domain), DAL (Databas) \u2013 \u00e4r ganska d\u00e5lig j\u00e4mf\u00f6rt med andra. Jag har inte sett s\u00e5 m\u00e5nga projekt, men i varje exempelvis mikro-tj\u00e4nst p\u00e5 backend anv\u00e4nds precis tre-lagersarkitekturen. <\/p>\n<p>Ocks\u00e5, anv\u00e4nds ofta en komponent-till-en-tj\u00e4nst-arkitektur. \u00d6verlag \u00e4r de b\u00e5da ganska bra, men den har en hel del nackdelar i j\u00e4mf\u00f6relse med hur arkitekturen byggs vid anv\u00e4ndning av DDD, s\u00e4rskilt vid kritiska f\u00f6r\u00e4ndringar och komplexa tj\u00e4nster.<\/p>\n<p>Sammanfattningsvis har jag kommit till slutet av denna recension av boken. Jag tyckte verkligen om boken, jag \u00e5ngrar inte att jag l\u00e4ste den, tack till f\u00f6rfattaren. Till er, k\u00e4ra l\u00e4sare, tack f\u00f6r er uppm\u00e4rksamhet, d\u00f6m inte f\u00f6r h\u00e5rt \u2014 detta inl\u00e4gg \u00e4r baserat p\u00e5 intrycket av boken och min personliga entusiasm.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Kort om det viktigaste: Clean Architecture, Robert C. Martin | ProHoster","description":"Detta kommer att vara en ber\u00e4ttelse om intrycken av boken, och vissa begrepp och kunskaper som, tack vare denna bok, har l\u00e4rt sig Arkitekturen. Kan ni, n\u00e4r ni l\u00e4ser detta inl\u00e4gg, ge.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}