{"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\/da\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Kort om det v\u00e6sentlige: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dette vil v\u00e6re en fort\u00e6lling om indtrykket af en bog, og der vil ogs\u00e5 blive behandlet nogle begreber og viden, som takket v\u00e6re denne bog er blevet udvidet.<\/p>\n<h3>Arkitektur<\/h3>\n<p>\nKan du, mens du l\u00e6ser dette indl\u00e6g, give et klart svar p\u00e5 sp\u00f8rgsm\u00e5let: hvad er arkitektur? Hvad er arkitektur i konteksten af programmering og design? Hvilken rolle spiller den? Der er en del uklarheder i dette begreb. Det virker som om, alt er klart, men alligevel abstrakt og uden pr\u00e6cision. Martin mener, og jeg er enig med ham, at en applikation har to komponenter: <\/p>\n<ol>\n<li>Adf\u00e6rd (behavior) \u2014 de funktioner og opgaver, som programmet (komponenten, servicen) udf\u00f8rer.<\/li>\n<li>Arkitektur \u2014 dette begreb handler i h\u00f8jere grad om \u00e6ndring af applikationen.<\/li>\n<\/ol>\n<p>\nMen selv hvis applikationen fungerer meget godt til det, den skal, betyder det ikke, at den har en god arkitektur. Arkitektur handler ikke om applikationens adf\u00e6rd. Arkitektur handler om letheden ved \u00e6ndringer, arkitektur handler om letheden ved implementering, arkitektur handler om uafh\u00e6ngighed i udviklingen. Arkitektur handler om den hastighed, hvormed forst\u00e5else kommer til et nyt medlem af teamet.<\/p>\n<p>Og s\u00e5dan bygger man denne arkitektur, hvordan man slipper for hovedpinen ved sm\u00e5 \u00e6ndringer af kravene fra PM'en eller interessenterne: det vil bogen fort\u00e6lle om.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Om forfatterne<\/h3>\n<p>\nF\u00f8r jeg siger noget om denne bog, vil jeg gerne fort\u00e6lle lidt om mig selv.<br \/>\nI \u00f8jeblikket er jeg Strong Junior Developer, der specialiserer sig i udvikling af tjenester ved hj\u00e6lp af ASP .NET CORE.<\/p>\n<p>Jeg har arbejdet et \u00e5r i en 'galleri', og det ser ud til, at jeg klarer mig okay.<\/p>\n<p>Jeg har allerede l\u00e6st denne bog to gange, og jeg anbefaler den til alle:<\/p>\n<ul>\n<li>udviklere af embedded-systemer;<\/li>\n<li>frontend-udviklere;<\/li>\n<li>backend-udviklere;<\/li>\n<li>og endda devops.<\/li>\n<\/ul>\n<p>\nGenerelt til alle, der p\u00e5 en eller anden m\u00e5de er involveret i softwareudvikling, om det g\u00e6lder direkte udvikling af forskellige ting, s\u00e6lgere og PM'er t\u00e6ller ikke med (selvom det ogs\u00e5 ville v\u00e6re nyttigt at vide, hvorfor udviklere ofte bruger to gange s\u00e5 lang tid p\u00e5 en opgave), anbefaler jeg at l\u00e6se denne bog.<br \/>\nOg nu vil jeg fors\u00f8ge at argumentere for, hvorfor jeg mener det.<\/p>\n<p>Lidt om forfatteren af denne bog (fordi for mig spiller forfatterens autoritet en stor rolle). Jeg tror, du forst\u00e5r mig, selvom det ikke altid er korrekt, men hvis en autoritativ person inden for omr\u00e5det siger noget, viser du langt mere tillid til det, de siger. For eksempel tror jeg, du vil have mere tillid til den diagnose, som en l\u00e6ge s\u00e6tter p\u00e5 dig, end til hvad som helst en person fra m\u00e6ngden (der har googlet symptomer) siger.<\/p>\n<p>Robert Martin \u2014 ogs\u00e5 kendt som Uncle Bob \u2014 har arbejdet inden for programmering siden 1970, og han har erfaring med forskellige systemer (fra webtjenester til indlejrede systemer). Han er teknisk r\u00e5dgiver og arkitekt, har skrevet til forskellige tekniske tidsskrifter, er en meget erfaren programm\u00f8r og har spillet en af de n\u00f8glem\u00e6ssige roller i udviklingen af de velkendte SOLID-principper (man kan sige, han er skaberen). Jeg vil ogs\u00e5 tilf\u00f8je, at det var min teamleder med over 15 \u00e5rs erfaring, der anbefalede denne bog til mig.<\/p>\n<h2>Om bogen<\/h2>\n<p><\/p>\n<h3>Afh\u00e6ngigheder<\/h3>\n<p>\nF\u00f8r jeg l\u00e6ste bogen, havde jeg l\u00e6st en del artikler p\u00e5 samme m\u00e5de som Habr, hvor ordet 'afh\u00e6ngighed' ofte optr\u00e5dte. Hvad betyder det, hvem afh\u00e6nger af hvem, hvad betyder det konkret at 'afh\u00e6nge', og hvordan kan en klasse v\u00e6re afh\u00e6ngig af en anden? <\/p>\n<p>Og mens jeg l\u00e6ste bogen, l\u00e6rte jeg to ting:<\/p>\n<p>Afh\u00e6ngighed \u2014 det er et term, der betyder, at en klasse (komponent, service) kender til en anden klasse (komponent, service), og denne viden er p\u00e5 kode niveau bestemt (nu vil java-udviklere, C#-udviklere og C-udviklere forst\u00e5 mig) af en bestemt import af navnerummet. Med andre ord: hvis du har klasse A med navnerummet Default.Classes og klasse B som Another.Classes. S\u00e5, hvis der i kildekoden til klasse A optr\u00e6der using Another.Classes; \u2014 s\u00e5 betyder det, at klasse A afh\u00e6nger af klasse B. <br \/>\nFor at forst\u00e5 p\u00e5 diagrammet, hvor den afh\u00e6ngige klasse er, og hvor den ikke er \u2014 se p\u00e5 retningen af pilen: i 1) vil pilen pege fra klasse A mod klasse B. Det betyder, at klasse B er mere uafh\u00e6ngig end klasse A. Og \u00e6ndringer i klasse A vil ikke p\u00e5f\u00f8re klasse B noget 'tab'.<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det v\u00e6sentlige: 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 af de vigtigste grunde til, at jeg l\u00e6ste denne bog, var forklaringen af SOLID-principperne fra den oprindelige kilde, fordi onkel Bob udviklede disse principper, og man kan sige, at det er takket v\u00e6re ham, at vi h\u00f8rer dette navn \u2014 SOLID.<br \/>\nFor dem, der ikke er bekendt med det \u2014 disse principper siger, at man b\u00f8r designe sine applikationer i overensstemmelse med de 5 regler:<\/p>\n<p>S \u2014 SRP (Single responsibility principle)<br \/>\nO \u2014 OCP (Open-closed principle)<br \/>\nL \u2014 LSP (Liskov substitution principle)<br \/>\nI \u2014 ISP (Interface segregation principle)<br \/>\nD \u2014 DIP (Dependency Inversion principle)<\/p>\n<p>Alle disse principper kan anvendes p\u00e5 niveauet for klasser og objekter, p\u00e5 niveauet for moduler og komponenter og p\u00e5 niveauet for lag (tjenester).<\/p>\n<p>Hvis du mener, at Single responsibility principle handler om, at en klasse eller et modul kun skal g\u00f8re \u00e9n ting \u2014 s\u00e5 skal du bestemt l\u00e6se i det mindste kapitlet om SOLID. For den definition, der gives ovenfor \u2014 er det en konsekvens, men p\u00e5 ingen m\u00e5de en definition af selve princippet.<\/p>\n<h3>Om Dependency Inversion<\/h3>\n<p>\nJeg vil gerne l\u00e6gge s\u00e6rlig v\u00e6gt p\u00e5 forklaringen af Dependency Inversion Principle (det, som er D i SOLID). Mens jeg l\u00e6ste bogen, inds\u00e5 jeg, at det ikke bare er et princip, men ogs\u00e5 en mekanisme og et v\u00e6rkt\u00f8j, som du kan bruge til at \u00e6ndre retningen af dine afh\u00e6ngigheder, og g\u00f8re for eksempel forretningslogik (DOMAIN) uafh\u00e6ngig af detaljerne i implementeringen af Data access layer (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det v\u00e6sentlige: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelvom selve princippet sammen med de andre i SOLID betyder noget lidt andet end mekanismen, anvendes denne mekanisme gennem hele bogen, og det er en af de grundl\u00e6ggende metoder til at invertere og \u00e6ndre retningen af dine afh\u00e6ngigheder, som for \u00f8vrigt anvendes ved DDD.<\/p>\n<h3>Om at tr\u00e6ffe arkitektoniske beslutninger.<\/h3>\n<p>\nMeget ofte vil bogen n\u00e6vne princippet om at tr\u00e6ffe vigtige arkitektoniske beslutninger: om hvilken database der skal bruges, hvilket framework der skal anvendes, hvilken bibliotek der skal tilsluttes, hvad der skal bruges som s\u00f8gemaskine osv.<\/p>\n<p>Forfatteren mener: du skal tr\u00e6ffe s\u00e5 F\u00c5 af den slags beslutninger som muligt. For kravene kan \u00e6ndre sig, begr\u00e6nsningerne i ydeevnen kan ogs\u00e5 \u00e6ndre sig, og den adf\u00e6rdsm\u00e6ssige komponent har en tendens til at \u00e6ndre sig. I udviklingsprocessen kan en bestemt l\u00f8sning vise sig at v\u00e6re mindre effektiv end en anden, mindre bekvem end en anden. Og styrken i din arkitektur vil bestemme, hvor hurtigt og smertefrit du kan erstatte en teknologi med en anden (det er faktisk noget, OCP understreger).<\/p>\n<p>For eksempel kan du pludselig beslutte at bruge MongoDB i stedet for PostgreSQL, eller blot filer, eller bruge mock-data, som operationer vil blive udf\u00f8rt i hukommelsen. Og under visse betingelser \u2014 kan dette tvinge dig til at skrive n\u00e6sten hele logikken om. <\/p>\n<p>For avoiding such situations, we can use certain mechanisms that will push the decision-making time as far as possible. One of these mechanisms is abstraction.<\/p>\n<h3>References to DDD<\/h3>\n<p>\nDDD \u2014 Domain Driven Design \u2014 is an approach to developing services with complex business logic that is critical to changes, aimed at ensuring maximum understanding among project leadership (PMs, Sale managers, etc.) and regular team members. This means that there should be a ubiquitous language among all project members, enabling everyone to understand one another and to think within the same domain with the same business rules.<\/p>\n<p>If you are an advocate of DDD, or want to become one, or even if you don\u2019t understand it but wish to, this book is a must-read, especially the second part.<\/p>\n<p>Here, the author explains the existence of the Dependency Rule and why adhering to it will lead you to build the correct application architecture. It clarifies why dependencies should point towards high-level policy components. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/domain\/\"   title=\"dom\u00e6ne\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">dom\u00e6ne<\/a> (High Policy component) should be independent of the infrastructure and how this will simplify your deployment and development.<\/p>\n<p><img decoding=\"async\" alt=\"Kort om det v\u00e6sentlige: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstraction<\/h3>\n<p>\nUncle Bob also discusses how implementation details can harm your system and prevent it from evolving painlessly in the future.<\/p>\n<p>Remember!<br \/>\nThe database is an implementation detail.<br \/>\nClients (Web, Mobile, etc.) are implementation details.<br \/>\nFrameworks are implementation details.<\/p>\n<p>One must abstract from all of this as much as possible and not be dependent, using the above-described Dependency Inversion with interfaces and abstractions, the Dependency Rule, and other mechanisms.<\/p>\n<h3>Methods of building modules<\/h3>\n<p>\nI particularly enjoyed this section as a developer of services on ASP .NET CORE. Here, methodologies for constructing a unified service architecture from ready components are discussed. <\/p>\n<p>Robert outlined four possible schemes for layer separation.<\/p>\n<p>He made it clear why the commonly used three-layer architecture mechanism: UI (controllers), Services (Domain), DAL (Database) is quite poor compared to others. I\u2019ve seen not many projects, but in each, for instance, a microservice on the backend, the three-layer architecture is used. <\/p>\n<p>Derudover anvendes architekturen \u00e9n-komponent-\u00e9n-tjeneste ofte. Generelt er de begge okay, men den har en del ulemper sammenlignet med, hvordan arkitekturen opbygges ved brug af DDD, is\u00e6r ved kritiske \u00e6ndringer og komplekse tjenester.<\/p>\n<p>Alt i alt er denne anmeldelse af bogen nu ved vejs ende. Jeg har virkelig nydt bogen og fortryder ikke, at jeg l\u00e6ste den, tak til forfatteren. Til dig, k\u00e6re l\u00e6ser, tak for din opm\u00e6rksomhed, d\u00f8m ikke for h\u00e5rdt - denne publikation er baseret p\u00e5 mine indtryk fra bogen og mit personlige engagement.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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 vigtigste: Clean Architecture, Robert C. Martin | ProHoster","description":"Dette vil v\u00e6re en beretning om mine indtryk af bogen, og nogle begreber og viden, der er blevet l\u00e6rt takket v\u00e6re denne bog. Arkitekturen Kan du, ved at l\u00e6se denne publikation, give.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}