{"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\/nl\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Kort over het belangrijkste: Clean Architecture, Robert C. Martin.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dit zal een verhaal zijn over de indruk van een boek, en er zullen ook enkele concepten en kennis worden behandeld die door dit boek zijn bestudeerd.<\/p>\n<h3>Architectuur<\/h3>\n<p>\nKun je, terwijl je deze publicatie leest, een duidelijk antwoord geven op de vraag: wat is architectuur? Wat is architectuur in de context van programmeren en ontwerpen? Welke rol speelt het? Er is best veel onduidelijkheid over deze term. Het lijkt allemaal wel duidelijk, maar het is op de een of andere manier abstract en zonder precisie. Martin denkt, en ik ben het met hem eens, dat een applicatie twee componenten heeft: <\/p>\n<ol>\n<li>Gedrag (behavior) \u2014 de functies en taken die het programma (component, service) uitvoert.<\/li>\n<li>Architectuur \u2014 deze term gaat in grotere mate over de verandering van een applicatie.<\/li>\n<\/ol>\n<p>\nMaar zelfs als de applicatie de taak die het moet uitvoeren heel goed vervult, betekent dat nog niet dat het een goede architectuur heeft. Architectuur gaat niet om het gedrag van de applicatie. Architectuur gaat om de eenvoud van wijzigbaarheid, architectuur gaat om de eenvoud van implementatie, architectuur gaat om de onafhankelijkheid van ontwikkeling. Architectuur gaat om de snelheid waarmee een nieuw lid van het team het begrijpt.<\/p>\n<p>En zo bouw je deze architectuur, hoe je de hoofdpijn kunt vermijden bij kleine wijzigingen in de eisen van de PM of van de stakeholder: daarover zal het boek vertellen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Over de auteurs<\/h3>\n<p>\nVoordat ik iets over dit boek zeg, wil ik iets over mezelf vertellen.<br \/>\nOp dit moment ben ik een Strong Junior Developer, gespecialiseerd in het ontwikkelen van services met ASP .NET CORE.<\/p>\n<p>Ik werk al een jaar bij een 'gallery', en ik lijkt het een beetje onder de knie te krijgen.<\/p>\n<p>Ik heb dit boek al twee keer gelezen, en ik raad het aan iedereen aan:<\/p>\n<ul>\n<li>ontwikkelaars van embedded systemen;<\/li>\n<li>frontend-ontwikkelaars;<\/li>\n<li>backend-ontwikkelaars;<\/li>\n<li>en zelfs DevOps.<\/li>\n<\/ul>\n<p>\nKortom, iedereen die op enige manier betrokken is bij softwareontwikkeling, met name directe ontwikkeling van verschillende Sales; PM's tel ik hier niet bij, hoewel het ook nuttig zou zijn om te weten waarom een dev soms twee keer zoveel tijd aan een taak besteedt, raad ik aan dit boek te lezen.<br \/>\nEn nu zal ik proberen te argumenteren waarom ik dat vind.<\/p>\n<p>Een beetje over de auteur van dit boek (want voor mij speelt de autoriteit van de schrijver een grote rol). Ik denk dat je me zal begrijpen, hoewel dit niet altijd juist is, maar als iemand met autoriteit in het vakgebied iets zegt - heb je veel meer vertrouwen in wat hij zegt. Bijvoorbeeld, ik denk dat je meer geloof zult hechten aan de diagnose die een arts stelt, dan aan die van een random persoon uit de menigte (die de symptomen heeft gegoogeld).<\/p>\n<p>Robert Martin - ook wel Uncle Bob genoemd - werkt sinds 1970 in de programmeerwereld, in verschillende systemen (van webservices tot embedded systemen). Hij is technisch adviseur en architect, heeft geschreven voor verschillende technische tijdschriften, is zelf een zeer ervaren programmeur, en een persoon die een van de sleutelrollen speelde bij het cre\u00ebren van de algemeen bekende SOLID-principes (je zou kunnen zeggen dat hij de oprichter is). Ook wil ik toevoegen dat mijn teamleider met meer dan 15 jaar ervaring me dit boek heeft aangeraden.<\/p>\n<h2>Over het boek<\/h2>\n<p><\/p>\n<h3>Afhankelijkheden<\/h3>\n<p>\nVoor het lezen van het boek heb ik veel artikelen op dezelfde site gelezen, waarin het woord \u2018afhankelijkheid\u2019 werd genoemd. Wat is dat precies, wie is van wie afhankelijk, wat betekent het concreet om \u2018afhankelijk\u2019 te zijn, en hoe kan een bepaalde klasse afhankelijk zijn van een andere? <\/p>\n<p>En terwijl ik het boek las, heb ik twee momenten begrepen:<\/p>\n<p>Afhankelijkheid is een term die betekent dat een bepaalde klasse (component, service) op de hoogte is van een andere klasse (component, service), en deze kennis wordt op code-niveau gedefinieerd (nu zullen Java-ontwikkelaars, C#-ontwikkelaars en C-ontwikkelaars begrijpen) door een bepaalde import van een namespace. Met andere woorden: als je klasse A hebt met de namespace Default.Classes en klasse B Another.Classes. Dan betekent het dat als in de broncode van klasse A using Another.Classes; voorkomt - dat klasse A afhankelijk is van klasse B. <br \/>\nOm op de diagram te zien waar de afhankelijke klasse is en waar niet - kijk naar de richting van de pijl: in 1) de pijl wijst van klasse A naar klasse B. Dit betekent dat klasse B onafhankelijker is dan klasse A. En veranderingen in klasse A zullen geen \u2018schade\u2019 toebrengen aan klasse B.<\/p>\n<p><img decoding=\"async\" alt=\"Kort over het belangrijkste: 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>\nEen van de belangrijkste redenen die mij aanspoorde om dit boek te lezen was de uitleg van de SOLID-principes vanuit de eerste bron, omdat Uncle Bob deze principes heeft ontwikkeld en je zou kunnen zeggen dat we dankzij hem deze naam - SOLID - kennen.<br \/>\nVoor diegenen die het niet weten: deze principes raden aan om je applicaties te ontwerpen volgens 5 regels:<\/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>Al deze principes kunnen worden toegepast op het niveau van klassen en objecten, op het niveau van modules en componenten, en op het niveau van lagen (diensten).<\/p>\n<p>Als je denkt dat het Single Responsibility Principle betekent dat een klasse of module maar \u00e9\u00e9n ding moet doen, dan moet je absoluut het hoofdstuk over SOLID lezen. Want de definitie die hierboven is gegeven, is een gevolg, maar absoluut niet de definitie van principe zelf.<\/p>\n<h3>Over Dependency Inversion<\/h3>\n<p>\nIk wil speciale aandacht besteden aan de uitleg van het Dependency Inversion Principle (de D van SOLID). Terwijl ik het boek las, begreep ik dat dit niet slechts een principe is; het is ook een mechanisme en instrument waarmee je de richting van je afhankelijkheden kunt veranderen, waardoor je bijvoorbeeld de bedrijfslogica (DOMAIN) onafhankelijk maakt van de implementatiedetails van de Data Access Layer (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Kort over het belangrijkste: Clean Architecture, Robert C. Martin.\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHoewel het principe zelf, net als de andere in SOLID, iets anders betekent dan het mechanisme, wordt het mechanisme door het hele boek heen gebruikt. Dit is een van de belangrijkste methodes om de richting van je afhankelijkheden te inverseren en te veranderen, en wordt bovendien gebruikt bij DDD.<\/p>\n<h3>Over het nemen van architecturale beslissingen<\/h3>\n<p>\nIn het boek zal vaak het principe worden genoemd van het nemen van belangrijke architecturale beslissingen: welke database te gebruiken, welk framework te kiezen, welke bibliotheek te integreren, welke zoekmachine te gebruiken, enzovoort.<\/p>\n<p>De auteur is van mening dat je ZOVEEL MOGELIJK minder van dit soort beslissingen moet nemen. Want de requirements kunnen veranderen, de beperkingen qua performance ook, en zelf de gedragscomponent heeft de neiging te veranderen. Gedurende het ontwikkelingsproces kan een bepaalde beslissing minder effectief blijken dan een andere, minder handig dan een andere. De kracht van je architectuur zal bepalen hoe snel en soepel je \u00e9\u00e9n technologie kunt vervangen door een andere (daarover spreekt OCP trouwens ook).<\/p>\n<p>Bijvoorbeeld, plotseling besluit je om in plaats van PostgreSQL MongoDB of zelfs bestanden te gebruiken, of om gemockte gegevens te gebruiken, waarmee in het geheugen operaties worden uitgevoerd. En onder bepaalde omstandigheden kan dit je dwingen om bijna de hele logica opnieuw te schrijven. <\/p>\n<p>Om dergelijke situaties te voorkomen, kunnen we verschillende mechanismen gebruiken die de besluitvorming zo ver mogelijk uitstellen. Een van deze mechanismen is abstractie.<\/p>\n<h3>Verwijzingen naar DDD<\/h3>\n<p>\nDDD \u2014 Domain Driven Design \u2014 is een benadering voor de ontwikkeling van services met complexe bedrijfslogica die kritisch is voor veranderingen, gericht op een maximaal begrip van de leidinggevende posities in het project (PM's, verkoopmanagers, enz.), met de gewone teamleden. Dit betekent dat er tussen alle leden van het project een ubiquitous language moet zijn, zodat iedereen elkaar kan begrijpen en ze allemaal in hetzelfde domein denken met dezelfde zakelijke regels.<\/p>\n<p>Als je een voorstander bent van DDD, of wilt zijn, of als je iets hiervan niet begrijpt maar het wel wilt begrijpen \u2014 dit boek is een must-read, vooral het tweede deel van het boek.<\/p>\n<p>Hier legt de auteur uit over het bestaan van de Dependency Rule, en waarom als je deze volgt \u2014 je de juiste architectuur van de applicatie zult bouwen. Waarom afhankelijkheden in de richting van High Policy componenten moeten gaan, waarom <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/nl\/domain\/\"   title=\"domein\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">domein<\/a> (High Policy component) onafhankelijk moet zijn van infrastructuur en hoe dat je implementatie en ontwikkeling zal vereenvoudigen<\/p>\n<p><img decoding=\"async\" alt=\"Kort over het belangrijkste: Clean Architecture, Robert C. Martin.\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstractie<\/h3>\n<p>\nOom Rob legt ook uit hoe implementatiedetails je systeem kunnen schaden en het moeilijk kunnen maken om in de toekomst zonder pijn te evolueren.<\/p>\n<p>Vergeet niet!<br \/>\nDB is een implementatiedetail<br \/>\nKlanten (Web, Mobiel, enz.) zijn implementatiedetails<br \/>\nFrameworks zijn implementatiedetails<\/p>\n<p>Je moet je zo veel mogelijk van dit alles abstraheren en er niet van afhankelijk zijn, door gebruik te maken van de hierboven beschreven Dependency Inversion met interfaces en abstracties, Dependency Rule en andere mechanismen<\/p>\n<h3>Methoden voor het bouwen van modules<\/h3>\n<p>\nDeze sectie sprak me bijzonder aan als ontwikkelaar van services op ASP .NET CORE. Hier worden de methodologie\u00ebn voor het opbouwen van een uniforme service-architectuur uit kant-en-klare componenten besproken. <\/p>\n<p>Robert beschreef 4 mogelijke schema's voor het scheiden van lagen.<\/p>\n<p>Hij maakte duidelijk waarom het vaak gebruikte mechanisme van de drie-laagse architectuur: UI (controllers), Services (Domain), DAL (Database) \u2014 behoorlijk slecht is in vergelijking met andere. Ik heb niet zoveel projecten gezien, maar in elk, bijvoorbeeld microservice, wordt precies de drie-laagse architectuur op de backend gebruikt. <\/p>\n<p>Even vaak wordt de \u00e9\u00e9n-component-\u00e9\u00e9n-dienst architectuur gebruikt. Over het algemeen zijn ze beide redelijk, maar deze heeft behoorlijk wat nadelen in vergelijking met de architectuur die bijvoorbeeld bij DDD wordt toegepast, vooral bij wijzigingen en ingewikkelde diensten.<\/p>\n<p>In het algemeen is deze recensie van het boek ten einde gekomen. Ik vond het boek zelf heel leuk, ik heb er geen spijt van dat ik het heb gelezen, bedankt aan de auteur. Jullie, beste lezers, bedankt voor jullie aandacht, oordeel niet te hard \u2014 deze publicatie is gebaseerd op mijn indruk van het boek en mijn persoonlijke enthousiasme.<br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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 samengevat: Clean Architecture, Robert C. Martin | ProHoster","description":"Dit zal een verhaal zijn over mijn indruk van het boek, evenals enkele concepten en kennis die, dankzij dit boek, zijn bestudeerd. Architectuur. Kunt u, terwijl u deze publicatie leest, iets bijdragen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}