{"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\/pt\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","title":{"rendered":"Breve resumo: Clean Architecture, Robert C. Martin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Este ser\u00e1 um relato sobre a impress\u00e3o de um livro, e tamb\u00e9m ser\u00e3o discutidos alguns conceitos e conhecimentos que, gra\u00e7as a este livro, foram aprendidos.<\/p>\n<h3>Arquitetura<\/h3>\n<p>\nVoc\u00ea consegue, ao ler esta publica\u00e7\u00e3o, dar uma resposta clara \u00e0 pergunta: o que \u00e9 arquitetura? O que \u00e9 arquitetura no contexto de programa\u00e7\u00e3o e design? Qual o seu papel? H\u00e1 muitas incertezas nesse termo. Parece claro, mas de alguma forma abstrato, sem precis\u00e3o. Martin acredita, e eu concordo, que um aplicativo tem duas componentes: <\/p>\n<ol>\n<li>Comportamento (behavior) \u2014 as fun\u00e7\u00f5es e tarefas que o programa (componente, servi\u00e7o) realiza.<\/li>\n<li>Arquitetura \u2014 este termo diz respeito principalmente \u00e0 mudan\u00e7a da aplica\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>\nMas mesmo que o aplicativo execute muito bem a tarefa que deve, isso n\u00e3o significa que ele tenha uma boa arquitetura. Arquitetura n\u00e3o \u00e9 sobre o comportamento do aplicativo. Arquitetura \u00e9 sobre a facilidade de mudan\u00e7a, \u00e9 sobre a facilidade de implanta\u00e7\u00e3o, \u00e9 sobre a independ\u00eancia do desenvolvimento. Arquitetura \u00e9 sobre a velocidade com que um novo membro da equipe compreende o projeto.<\/p>\n<p>E \u00e9 assim que se constr\u00f3i essa arquitetura, como evitar a dor de cabe\u00e7a ao lidar com pequenas mudan\u00e7as de requisitos por parte do PM ou do stakeholder: \u00e9 sobre isso que o livro fala.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Sobre os autores<\/h3>\n<p>\nAntes de falar qualquer coisa sobre este livro, quero dizer um pouco sobre mim.<br \/>\nAtualmente sou um Strong Junior Developer, especializado no desenvolvimento de servi\u00e7os usando ASP .NET CORE.<\/p>\n<p>J\u00e1 trabalho h\u00e1 um ano em uma 'galeria', e parece que estou lidando com isso aos poucos.<\/p>\n<p>Eu j\u00e1 li este livro duas vezes e recomendo sua leitura para todos:<\/p>\n<ul>\n<li>desenvolvedores de sistemas embarcados;<\/li>\n<li>profissionais de front-end;<\/li>\n<li>profissionais de back-end;<\/li>\n<li>e at\u00e9 mesmo devops.<\/li>\n<\/ul>\n<p>\nEm resumo, para todos que est\u00e3o de alguma forma relacionados ao desenvolvimento de software, me refiro ao desenvolvimento direto de v\u00e1rios produtos; SAs e PMs n\u00e3o est\u00e3o inclu\u00eddos (embora tamb\u00e9m seria \u00fatil entender por que um dev pode levar o dobro do tempo em uma tarefa), eu recomendo a leitura deste livro.<br \/>\nE agora tentarei argumentar por que penso assim.<\/p>\n<p>Um pouco sobre o autor deste livro (porque, para mim, a autoridade do autor tem um grande peso). Acredito que voc\u00ea vai me entender, mesmo que isso nem sempre esteja correto, mas quando uma pessoa respeitada na \u00e1rea diz algo, voc\u00ea tende a ter muito mais confian\u00e7a no que foi dito. Por exemplo, eu acho que voc\u00ea acreditaria mais no diagn\u00f3stico dado por um m\u00e9dico do que em algo dito por uma pessoa aleat\u00f3ria (que apenas pesquisou os sintomas).<\/p>\n<p>Robert Martin \u2014 tamb\u00e9m conhecido como Uncle Bob (Tio Bob) \u2014 trabalha na \u00e1rea da programa\u00e7\u00e3o, em diferentes sistemas (de servi\u00e7os web a sistemas embarcados), desde 1970. Ele \u00e9 um consultor t\u00e9cnico e arquiteto, escreveu para v\u00e1rias revistas t\u00e9cnicas, \u00e9 um programador muito experiente e uma das pessoas que desempenhou um papel chave na cria\u00e7\u00e3o dos famosos princ\u00edpios SOLID (pode-se dizer que ele \u00e9 o criador). Tamb\u00e9m gostaria de adicionar que este livro foi recomendado por meu l\u00edder de equipe, que possui mais de 15 anos de experi\u00eancia.<\/p>\n<h2>Sobre o livro<\/h2>\n<p><\/p>\n<h3>Depend\u00eancias<\/h3>\n<p>\nAntes de ler o livro, li muitos artigos no mesmo Habr, onde aparecia a palavra \"depend\u00eancia\". O que \u00e9 isso, quem depende de quem, o que exatamente significa \"depender\", e como uma classe pode depender de outra? <\/p>\n<p>E assim, ao longo da leitura do livro, eu assimilei dois pontos:<\/p>\n<p>Depend\u00eancia \u00e9 um termo que significa que uma classe (componente, servi\u00e7o) conhece outra classe (componente, servi\u00e7o), e esse conhecimento no n\u00edvel do c\u00f3digo \u00e9 determinado (agora os programadores de Java, C# e C entender\u00e3o) por uma importa\u00e7\u00e3o espec\u00edfica do namespace. Em outras palavras: voc\u00ea tem a classe A com o namespace Default.Classes e a classe B com Another.Classes. Ent\u00e3o, se no c\u00f3digo fonte da classe A aparecer \"using Another.Classes;\" \u2014 isso significa que a classe A depende da classe B. <br \/>\nPara entender no diagrama onde est\u00e1 a classe dependente e onde n\u00e3o est\u00e1 \u2014 observe a dire\u00e7\u00e3o da seta: em 1) a seta apontar\u00e1 da classe A na dire\u00e7\u00e3o da classe B. Isso significa que a classe B \u00e9 mais independente do que a classe A. E altera\u00e7\u00f5es na classe A n\u00e3o causar\u00e3o nenhum \"dano\" \u00e0 classe B.<\/p>\n<p><img decoding=\"async\" alt=\"Breve resumo: 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>\nUma das principais raz\u00f5es que me levaram a ler este livro foi a explica\u00e7\u00e3o dos princ\u00edpios SOLID a partir da fonte original, pois o tio Rob desenvolveu esses princ\u00edpios e pode-se dizer que, gra\u00e7as a ele, ouvimos esse nome \u2014 SOLID.<br \/>\nPara aqueles que n\u00e3o est\u00e3o por dentro \u2014 esses princ\u00edpios dizem e recomendam projetar seus aplicativos de acordo com 5 regras:<\/p>\n<p>S \u2014 SRP (Princ\u00edpio da responsabilidade \u00fanica)<br \/>\nO \u2014 OCP (Princ\u00edpio do fechado-aberto)<br \/>\nL \u2014 LSP (Princ\u00edpio da substitui\u00e7\u00e3o de Liskov)<br \/>\nI \u2014 ISP (Princ\u00edpio da segrega\u00e7\u00e3o de interface)<br \/>\nD \u2014 DIP (Princ\u00edpio da invers\u00e3o de depend\u00eancia)<\/p>\n<p>Todos esses princ\u00edpios podem ser aplicados no n\u00edvel de classes e objetos, no n\u00edvel de m\u00f3dulos e componentes e no n\u00edvel de camadas (servi\u00e7os).<\/p>\n<p>Se voc\u00ea acha que o Princ\u00edpio da responsabilidade \u00fanica \u00e9 sobre um classe ou m\u00f3dulo fazer apenas uma coisa \u2014 ent\u00e3o voc\u00ea definitivamente precisa ler ao menos um cap\u00edtulo sobre SOLID. Pois a defini\u00e7\u00e3o apresentada acima \u00e9 uma consequ\u00eancia, mas n\u00e3o a defini\u00e7\u00e3o do pr\u00f3prio princ\u00edpio.<\/p>\n<h3>Sobre a Invers\u00e3o de Depend\u00eancia<\/h3>\n<p>\nQuero chamar a aten\u00e7\u00e3o para a explica\u00e7\u00e3o do Princ\u00edpio da Invers\u00e3o de Depend\u00eancia (o que \u00e9 o D em SOLID). Ao longo da leitura do livro, percebi que n\u00e3o \u00e9 apenas um princ\u00edpio, mas tamb\u00e9m um mecanismo e uma ferramenta, atrav\u00e9s da qual voc\u00ea pode mudar a dire\u00e7\u00e3o de suas depend\u00eancias, e fazer, por exemplo, a l\u00f3gica de neg\u00f3cios (DOM\u00cdNIO) independente dos detalhes de implementa\u00e7\u00e3o da camada de acesso a dados (DAL).<\/p>\n<p><img decoding=\"async\" alt=\"Breve resumo: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/0bceb51ecdb3d220d8a311d0ccdb26d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEmbora o pr\u00f3prio princ\u00edpio, junto com os outros em SOLID, signifique um pouco diferente do que o mecanismo, esse mecanismo \u00e9 utilizado ao longo de todo o livro, e \u00e9 um dos principais m\u00e9todos para inverter e mudar a dire\u00e7\u00e3o de suas depend\u00eancias, que, por sinal, \u00e9 utilizado em DDD.<\/p>\n<h3>Sobre a tomada de decis\u00f5es arquitet\u00f4nicas<\/h3>\n<p>\nMuito frequentemente, o livro mencionar\u00e1 o princ\u00edpio da tomada de decis\u00f5es arquitet\u00f4nicas importantes: sobre qual banco de dados usar, qual framework usar, que biblioteca adicionar, o que usar como motor de busca, etc.<\/p>\n<p>Assim, o autor acredita: voc\u00ea deve tomar O M\u00cdNIMO poss\u00edvel desse tipo de decis\u00f5es. Pois os requisitos podem mudar, as restri\u00e7\u00f5es de performance tamb\u00e9m, e o pr\u00f3prio comportamento tende a mudar. Durante o processo de desenvolvimento, uma decis\u00e3o pode parecer menos eficaz do que outra, menos conveniente do que outra. E a for\u00e7a da sua arquitetura determinar\u00e1 qu\u00e3o rapidamente e sem dor voc\u00ea poder\u00e1 substituir uma tecnologia por outra (sobre isso, ali\u00e1s, fala o OCP).<\/p>\n<p>Por exemplo, de repente, voc\u00ea decide usar MongoDb em vez de Postgresql, ou at\u00e9 mesmo arquivos, ou usar dados simulados, com os quais as opera\u00e7\u00f5es ser\u00e3o realizadas na mem\u00f3ria. E sob certas condi\u00e7\u00f5es \u2014 isso pode obrig\u00e1-lo a reescrever quase toda a l\u00f3gica. <\/p>\n<p>Para evitar que tais situa\u00e7\u00f5es ocorram, podemos utilizar alguns mecanismos que ir\u00e3o maximizar a dist\u00e2ncia entre a decis\u00e3o e o seu tempo de aceita\u00e7\u00e3o. Um desses mecanismos \u00e9 a abstra\u00e7\u00e3o.<\/p>\n<h3>Refer\u00eancias ao DDD<\/h3>\n<p>\nDDD \u2014 Domain Driven Design \u2014 \u00e9 uma abordagem para o desenvolvimento de servi\u00e7os com l\u00f3gica de neg\u00f3cios complexa e suscet\u00edvel a mudan\u00e7as, que visa o m\u00e1ximo entendimento entre os gestores do projeto (PMs, gerentes de vendas etc.) e os membros da equipe. Ou seja, para que todos os membros do projeto tenham uma linguagem ub\u00edqua e possam entender uns aos outros, e que todos pensem em um mesmo dom\u00ednio com as mesmas regras de neg\u00f3cios.<\/p>\n<p>Se voc\u00ea \u00e9 um defensor do DDD, ou quer se tornar um, ou se n\u00e3o entende muito sobre isso, mas deseja entender \u2014 o livro \u00e9 leitura obrigat\u00f3ria, especialmente a segunda parte.<\/p>\n<p>Aqui o autor explica a exist\u00eancia da Regra de Depend\u00eancia e por que, ao segui-la, voc\u00ea construir\u00e1 a arquitetura correta do aplicativo. Por que as depend\u00eancias devem seguir na dire\u00e7\u00e3o dos componentes de Alta Pol\u00edtica, e por que. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/domain\/\"   title=\"o dom\u00ednio\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4077\">o dom\u00ednio<\/a> (O componente de Alta Pol\u00edtica) deve ser independente da infraestrutura e como isso simplificar\u00e1 seu deployment e desenvolvimento.<\/p>\n<p><img decoding=\"async\" alt=\"Breve resumo: Clean Architecture, Robert C. Martin\" src=\"\/wp-content\/uploads\/2019\/08\/be7b51d067415390e0098339fb6cda46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Abstra\u00e7\u00e3o<\/h3>\n<p>\nO Tio Rob tamb\u00e9m fala sobre como os detalhes de implementa\u00e7\u00e3o podem prejudicar seu sistema e impedir que ele evolua sem dor no futuro.<\/p>\n<p>Lembre-se!<br \/>\nBD \u00e9 um detalhe de implementa\u00e7\u00e3o.<br \/>\nClientes (Web, Mobile, etc.) s\u00e3o detalhes de implementa\u00e7\u00e3o.<br \/>\nFrameworks s\u00e3o detalhes de implementa\u00e7\u00e3o.<\/p>\n<p>\u00c9 preciso se abstrair ao m\u00e1ximo de tudo isso e n\u00e3o depender, utilizando a Invers\u00e3o de Depend\u00eancia descrita acima com interfaces e abstra\u00e7\u00f5es, a Regra de Depend\u00eancia e outros mecanismos.<\/p>\n<h3>M\u00e9todos de constru\u00e7\u00e3o de m\u00f3dulos<\/h3>\n<p>\nEsta se\u00e7\u00e3o me agradou muito, como desenvolvedor de servi\u00e7os em ASP .NET CORE. Pois aqui s\u00e3o discutidas metodologias para construir uma arquitetura \u00fanica de servi\u00e7o a partir de componentes prontos. <\/p>\n<p>Robert descreveu 4 poss\u00edveis esquemas para a separa\u00e7\u00e3o de camadas.<\/p>\n<p>Ele deixou claro por que o mecanismo da arquitetura de 3 camadas: UI (controladores), Servi\u00e7os (Dom\u00ednio), DAL (Banco de Dados) \u2014 \u00e9 bastante ruim em compara\u00e7\u00e3o com outros. Eu n\u00e3o vi muitos projetos, mas em cada um, por exemplo, em microservi\u00e7os, utiliza-se exatamente a arquitetura de tr\u00eas camadas. <\/p>\n<p>Al\u00e9m disso, frequentemente se utiliza a arquitetura de um-componente-um-servi\u00e7o. No geral, ambas s\u00e3o boas, mas t\u00eam muitas desvantagens, especialmente em compara\u00e7\u00e3o com como a arquitetura \u00e9 constru\u00edda usando DDD, principalmente em servi\u00e7os cr\u00edticos para mudan\u00e7a e complexos.<\/p>\n<p>Em resumo, chegamos ao final desta revis\u00e3o do livro. Eu realmente gostei do livro, n\u00e3o me arrependo da leitura, agrade\u00e7o ao autor. A voc\u00eas, caros leitores, obrigado pela aten\u00e7\u00e3o, n\u00e3o sejam t\u00e3o duros \u2014 esta publica\u00e7\u00e3o \u00e9 baseada na impress\u00e3o que tive do livro e no meu entusiasmo pessoal.<br \/>\n<br \/>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Breve resumo: Clean Architecture, Robert C. Martin | ProHoster","description":"Este ser\u00e1 um relato sobre a impress\u00e3o do livro, e tamb\u00e9m ser\u00e3o discutidos alguns conceitos e conhecimentos que, gra\u00e7as a este livro, foram adquiridos. Arquitetura Voc\u00ea pode, ao ler esta publica\u00e7\u00e3o, fornecer.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/korotko-o-glavnom-clean-architecture-robert-c-martin","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/37273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=37273"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/37273\/revisions"}],"predecessor-version":[{"id":163180,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/37273\/revisions\/163180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/27958"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=37273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=37273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=37273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}