<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comentários sobre: SOLID de verdade – Single Responsibility Principle (SRP)	</title>
	<atom:link href="https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/</link>
	<description>Arquitetura e desenvolvimento de Software</description>
	<lastBuildDate>Tue, 15 Nov 2022 11:21:17 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>
		Por: ftathiago		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-423</link>

		<dc:creator><![CDATA[ftathiago]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 11:21:17 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-423</guid>

					<description><![CDATA[Em resposta a &lt;a href=&quot;https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407&quot;&gt;Fernando&lt;/a&gt;.

&gt; Seria esse um princípio para ser aplicado de forma retroativa? Identificar que uma classe irá sofrer múltiplas mudanças, que causaram problemas em diferentes partes do programa que a utilizam, antes que esses problemas ocorram não me parece factível. Mas pode ser só a minha falta de experiência em uma empresa de fato.

Aí nós podemos falar de arquitetura evolutiva. Basicamente, você precisa aumentar a complexidade do seu software de acordo com a demanda. De igual forma, você precisa cuidar para que o software esteja flexível o suficiente para suportar modificações. Isso quer dizer que você não precisa partir de uma solução completamente desacoplada. Principalmente se você não tem visão de pra onde o sistema vai evoluir. Você caminha com o que conhece e refatora durante o caminho. 

DETALHE: refatorar código SEMPRE será preciso; especialmente para diminuir a entropia do design da sua aplicação. 

Espero ter ajudado. E desculpe pela demora :)]]></description>
			<content:encoded><![CDATA[<p>Em resposta a <a href="https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407">Fernando</a>.</p>
<p>> Seria esse um princípio para ser aplicado de forma retroativa? Identificar que uma classe irá sofrer múltiplas mudanças, que causaram problemas em diferentes partes do programa que a utilizam, antes que esses problemas ocorram não me parece factível. Mas pode ser só a minha falta de experiência em uma empresa de fato.</p>
<p>Aí nós podemos falar de arquitetura evolutiva. Basicamente, você precisa aumentar a complexidade do seu software de acordo com a demanda. De igual forma, você precisa cuidar para que o software esteja flexível o suficiente para suportar modificações. Isso quer dizer que você não precisa partir de uma solução completamente desacoplada. Principalmente se você não tem visão de pra onde o sistema vai evoluir. Você caminha com o que conhece e refatora durante o caminho. </p>
<p>DETALHE: refatorar código SEMPRE será preciso; especialmente para diminuir a entropia do design da sua aplicação. </p>
<p>Espero ter ajudado. E desculpe pela demora 🙂</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: ftathiago		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-422</link>

		<dc:creator><![CDATA[ftathiago]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 11:18:04 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-422</guid>

					<description><![CDATA[Em resposta a &lt;a href=&quot;https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407&quot;&gt;Fernando&lt;/a&gt;.

&gt; Não é ruim ter múltiplas classes representando uma mesma entidade, já que alguma parte do código pode ser compartilhado entre elas, de forma que uma alteração nessa parte compartilhada terá de ser repetida em todas essas classes?

Vai depender do modelo arquitetural que você está seguindo. Se você está implementando Micro serviços, não vejo problema. Mesmo porque, cada micro serviço saberia lidar apenas com a complexidade que lhe cabe, não reproduzindo uma função de outro serviço. O lote, no MS de performance, sequer teria os métodos relativos a qualidade.

Se você está implementando um monolito, SOA ou qualquer outro modelo, existem formas de reaproveitar código sim, mas em tese você deveria separar em namespaces diferentes e controlar a visibilidade dos métodos. Para um domínio não deveria acessar diretamente a interface do outro.]]></description>
			<content:encoded><![CDATA[<p>Em resposta a <a href="https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407">Fernando</a>.</p>
<p>> Não é ruim ter múltiplas classes representando uma mesma entidade, já que alguma parte do código pode ser compartilhado entre elas, de forma que uma alteração nessa parte compartilhada terá de ser repetida em todas essas classes?</p>
<p>Vai depender do modelo arquitetural que você está seguindo. Se você está implementando Micro serviços, não vejo problema. Mesmo porque, cada micro serviço saberia lidar apenas com a complexidade que lhe cabe, não reproduzindo uma função de outro serviço. O lote, no MS de performance, sequer teria os métodos relativos a qualidade.</p>
<p>Se você está implementando um monolito, SOA ou qualquer outro modelo, existem formas de reaproveitar código sim, mas em tese você deveria separar em namespaces diferentes e controlar a visibilidade dos métodos. Para um domínio não deveria acessar diretamente a interface do outro.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: ftathiago		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-421</link>

		<dc:creator><![CDATA[ftathiago]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 11:13:20 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-421</guid>

					<description><![CDATA[Em resposta a &lt;a href=&quot;https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407&quot;&gt;Fernando&lt;/a&gt;.

&gt; Como os termos “motivo” e “responsabilidade” se encaixa nessa interpretação? Quero dizer, como “ter uma única responsabilidade” ou “apenas um motivo para mudar” pode significar algo como “estar sob um único domínio”.

Motivo é motivo mesmo. Ainda no nosso exemplo, se eu quero alterar a forma como eu calculo a performance de um lote, o módulo que calcula a qualidade não deveria sofrer alterações. Os atores envolvidos, muito provavelmente, não são os mesmos. E aqui não estou falando de usuários. Estamos mais próximos dos stakeholders.

A Classe lote, no domínio de performance, teve o motivo “alterar cálculo de performance” e no contexto de performance ela tem a responsabilidade de “calcular a performance deste lote”. Se for a mesma classe em qualidade, o domínio teria que ser recompilado e redeployado MESMO que nenhuma alteração para ele tenha sido solicitada.]]></description>
			<content:encoded><![CDATA[<p>Em resposta a <a href="https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407">Fernando</a>.</p>
<p>> Como os termos “motivo” e “responsabilidade” se encaixa nessa interpretação? Quero dizer, como “ter uma única responsabilidade” ou “apenas um motivo para mudar” pode significar algo como “estar sob um único domínio”.</p>
<p>Motivo é motivo mesmo. Ainda no nosso exemplo, se eu quero alterar a forma como eu calculo a performance de um lote, o módulo que calcula a qualidade não deveria sofrer alterações. Os atores envolvidos, muito provavelmente, não são os mesmos. E aqui não estou falando de usuários. Estamos mais próximos dos stakeholders.</p>
<p>A Classe lote, no domínio de performance, teve o motivo “alterar cálculo de performance” e no contexto de performance ela tem a responsabilidade de “calcular a performance deste lote”. Se for a mesma classe em qualidade, o domínio teria que ser recompilado e redeployado MESMO que nenhuma alteração para ele tenha sido solicitada.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: ftathiago		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-419</link>

		<dc:creator><![CDATA[ftathiago]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 11:04:58 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-419</guid>

					<description><![CDATA[Em resposta a &lt;a href=&quot;https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407&quot;&gt;Fernando&lt;/a&gt;.

Bom dia, Fernando. Ótima pergunta! A primeira coisa que eu preciso lembrar é que não existe bala de prata. Sei que é clichê, mas é que realmente toda decisão arquitetural/modelagem depende muito do contexto. Dito isto:

&gt; Domínio é um sinônimo de departamento?

Dependendo do tamanho do negócio que você deseja modelar, pode até ser que, coincidentemente, os domínios e departamentos tenham uma relação 1x1. Mas não são sinônimos. Pense, por exemplo, numa empresa de contabilidade. Ela própria é um &quot;departamento financeiro&quot; de alguém, e mesmo assim pode ter vários domínios/sub-domínios.

A melhor forma de pensa em domínios, subdomínios e contextos é entendê-los como &quot;ilhas de complexidade de negócio&quot;. Por exemplo: Ao desenvolver um PCP, para um mesmo setor de uma linha de produção, você pode olhar para ela considerando várias frentes de complexidade. Entre elas: Performance, Qualidade, Manutenção, Segurança do trabalho e etc. Pensando no Operador, ele tem papéis distintos e funções distintas em cada um desses contextos (ou sub-domínios, como queira chamar). No contexto de performance, um operador não deveria conseguir gerar um pedido de manutenção - veja, estamos falando da complexidade e não da jornada do usuário em um sistema - bem como no contexto de Segurança do trabalho, não seria possível anotar o encerramento de um lote.  Captou?]]></description>
			<content:encoded><![CDATA[<p>Em resposta a <a href="https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407">Fernando</a>.</p>
<p>Bom dia, Fernando. Ótima pergunta! A primeira coisa que eu preciso lembrar é que não existe bala de prata. Sei que é clichê, mas é que realmente toda decisão arquitetural/modelagem depende muito do contexto. Dito isto:</p>
<p>> Domínio é um sinônimo de departamento?</p>
<p>Dependendo do tamanho do negócio que você deseja modelar, pode até ser que, coincidentemente, os domínios e departamentos tenham uma relação 1&#215;1. Mas não são sinônimos. Pense, por exemplo, numa empresa de contabilidade. Ela própria é um &#8220;departamento financeiro&#8221; de alguém, e mesmo assim pode ter vários domínios/sub-domínios.</p>
<p>A melhor forma de pensa em domínios, subdomínios e contextos é entendê-los como &#8220;ilhas de complexidade de negócio&#8221;. Por exemplo: Ao desenvolver um PCP, para um mesmo setor de uma linha de produção, você pode olhar para ela considerando várias frentes de complexidade. Entre elas: Performance, Qualidade, Manutenção, Segurança do trabalho e etc. Pensando no Operador, ele tem papéis distintos e funções distintas em cada um desses contextos (ou sub-domínios, como queira chamar). No contexto de performance, um operador não deveria conseguir gerar um pedido de manutenção &#8211; veja, estamos falando da complexidade e não da jornada do usuário em um sistema &#8211; bem como no contexto de Segurança do trabalho, não seria possível anotar o encerramento de um lote.  Captou?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Fernando		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-407</link>

		<dc:creator><![CDATA[Fernando]]></dc:creator>
		<pubDate>Sat, 29 Oct 2022 17:50:12 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-407</guid>

					<description><![CDATA[Olá! Obrigado pelo texto. Você escreve muito bem. Até me deu a sensação de tudo fazer sentido... pelo menos por um momento. Como sempre, eu consegui ficar mais confuso pensando sobre essa interpretação correta acerca do princípio. Novas dúvidas surgiram. 

Abaixo eu deixo algumas delas. Caso algum leitor ou o autor do texto puder me ajudar a responder essas perguntas, eu agradeço de coração!

&quot;Domínio&quot; é um sinônimo de departamento? 

Como os termos &quot;motivo&quot; e &quot;responsabilidade&quot; se encaixa nessa interpretação? Quero dizer, como &quot;ter uma única responsabilidade&quot; ou  &quot;apenas um motivo para mudar&quot; pode significar algo como &quot;estar sob um único domínio&quot;. 

Não é ruim ter múltiplas classes representando uma mesma entidade, já que alguma parte do código pode ser compartilhado entre elas, de forma que uma alteração nessa parte compartilhada terá de ser repetida em todas essas classes?

Seria esse um princípio para ser aplicado de forma retroativa? Identificar que uma classe irá sofrer múltiplas mudanças, que causaram problemas em diferentes partes do programa que a utilizam, antes que esses problemas ocorram não me parece factível. Mas pode ser só a minha falta de experiência em uma empresa de fato.]]></description>
			<content:encoded><![CDATA[<p>Olá! Obrigado pelo texto. Você escreve muito bem. Até me deu a sensação de tudo fazer sentido&#8230; pelo menos por um momento. Como sempre, eu consegui ficar mais confuso pensando sobre essa interpretação correta acerca do princípio. Novas dúvidas surgiram. </p>
<p>Abaixo eu deixo algumas delas. Caso algum leitor ou o autor do texto puder me ajudar a responder essas perguntas, eu agradeço de coração!</p>
<p>&#8220;Domínio&#8221; é um sinônimo de departamento? </p>
<p>Como os termos &#8220;motivo&#8221; e &#8220;responsabilidade&#8221; se encaixa nessa interpretação? Quero dizer, como &#8220;ter uma única responsabilidade&#8221; ou  &#8220;apenas um motivo para mudar&#8221; pode significar algo como &#8220;estar sob um único domínio&#8221;. </p>
<p>Não é ruim ter múltiplas classes representando uma mesma entidade, já que alguma parte do código pode ser compartilhado entre elas, de forma que uma alteração nessa parte compartilhada terá de ser repetida em todas essas classes?</p>
<p>Seria esse um princípio para ser aplicado de forma retroativa? Identificar que uma classe irá sofrer múltiplas mudanças, que causaram problemas em diferentes partes do programa que a utilizam, antes que esses problemas ocorram não me parece factível. Mas pode ser só a minha falta de experiência em uma empresa de fato.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Danilo		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-247</link>

		<dc:creator><![CDATA[Danilo]]></dc:creator>
		<pubDate>Sun, 06 Dec 2020 21:01:28 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-247</guid>

					<description><![CDATA[Muito bom, cara! Conduziu o artigo bem diferente dos que já li]]></description>
			<content:encoded><![CDATA[<p>Muito bom, cara! Conduziu o artigo bem diferente dos que já li</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: SOLID de verdade – Liskov Substitution Principle (LSP) &#8211; Blog do FT		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-42</link>

		<dc:creator><![CDATA[SOLID de verdade – Liskov Substitution Principle (LSP) &#8211; Blog do FT]]></dc:creator>
		<pubDate>Sun, 15 Mar 2020 17:57:58 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-42</guid>

					<description><![CDATA[[&#8230;] SRP – Single Responsibility Principle [&#8230;]]]></description>
			<content:encoded><![CDATA[<p>[&#8230;] SRP – Single Responsibility Principle [&#8230;]</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: SOLID de verdade – Open/Closed Principle (OCP) - Blog do FT		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-30</link>

		<dc:creator><![CDATA[SOLID de verdade – Open/Closed Principle (OCP) - Blog do FT]]></dc:creator>
		<pubDate>Sat, 29 Feb 2020 22:23:18 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-30</guid>

					<description><![CDATA[[&#8230;] SRP – Single Responsibility Principle [&#8230;]]]></description>
			<content:encoded><![CDATA[<p>[&#8230;] SRP – Single Responsibility Principle [&#8230;]</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: SOLID de verdade – Interface Segregation Principle (ISP) - Blog do FT		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-25</link>

		<dc:creator><![CDATA[SOLID de verdade – Interface Segregation Principle (ISP) - Blog do FT]]></dc:creator>
		<pubDate>Sun, 23 Feb 2020 23:19:31 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-25</guid>

					<description><![CDATA[[&#8230;] SRP – Single Responsibility Principle [&#8230;]]]></description>
			<content:encoded><![CDATA[<p>[&#8230;] SRP – Single Responsibility Principle [&#8230;]</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: SOLID de verdade - Introdução - Blog do FT		</title>
		<link>https://www.blogdoft.com.br/2020/02/10/solid-de-verdade-single-responsibility-principle-srp/#comment-23</link>

		<dc:creator><![CDATA[SOLID de verdade - Introdução - Blog do FT]]></dc:creator>
		<pubDate>Mon, 10 Feb 2020 22:45:02 +0000</pubDate>
		<guid isPermaLink="false">https://www.blogdoft.com.br/?p=221#comment-23</guid>

					<description><![CDATA[[&#8230;] SRP &#8211; Single Responsability Principle [&#8230;]]]></description>
			<content:encoded><![CDATA[<p>[&#8230;] SRP &#8211; Single Responsability Principle [&#8230;]</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
