Se você tivesse um colega que não entendeu os benefícios da Separação de Preocupações ou não o entendeu o suficiente para aplicar de maneira consistente no trabalho diário, como explicaria isso a eles?
code-quality
object-oriented
Marcie
fonte
fonte
Respostas:
Imagine que você tem um programa que foi lançado. Um cliente aparece e se oferece para pagar por uma melhoria em um de seus recursos. Para obter o dinheiro, você precisará alterar seu programa para adicionar o novo recurso. Algumas das coisas que irão influenciar qual é a sua margem de lucro são:
A separação de preocupações ajuda você a obter respostas mais positivas para essas perguntas.
fonte
Procure um hospital e pense em todos os diferentes papéis envolvidos na prestação de cuidados a um paciente: triagem de enfermeiros, médicos, assistentes médicos, técnicos, equipe de funcionários, cafeteria, etc.
Existe alguém que sabe como todas essas pessoas fazem seu trabalho? Não, porque seria esmagador. Eles precisam separar as diferentes responsabilidades em papéis distintos e os pontos de contato entre esses papéis são muito específicos.
fonte
Se ele / ela trabalha em um escritório, tome como exemplo, explique o papel de cada equipe naquele escritório e pergunte-lhe o que aconteceria se essas equipes não estivessem divididas de acordo com seu trabalho?
fonte
Gostaria de ver como ele falhou em aplicar o SoC em seu código / design e transformá-lo em um exemplo do mundo real com o qual ele pode se relacionar e que é obviamente indesejável.
Por exemplo, se ele tem uma classe em que o cliente precisa fornecer várias informações que não são relevantes para esses clientes, eu usaria a analogia de uma padaria onde você deve trazer seus próprios grãos e leveduras, se quiser comprar um pão.
fonte
Um exemplo pode ser que um desenvolvedor de html queira separar html, css e javascript em arquivos separados. Dessa forma, você pode alterar a aparência de algo que diz algo, simplesmente modificando o css ou o comportamento de algo, alterando o arquivo javascript carregado separadamente. Se você tiver um site responsivo ou adaptável, esse paradigma funcionará bem, pois você poderá carregar css ou javascript diferentes, dependendo da viewport ou do agente do usuário. No entanto, se você modificar o html ou o modelo, é provável que o css ou o javascript possam quebrar. Essas preocupações separadas também podem ser dependentes.
Outra abordagem é agrupar todo o seu css javascript e html em um grupo de componentes ou módulos. Isso significa que você pode fazer alterações em um módulo e não deve afetar outros componentes ou módulos na página em que são executados ao lado e que não estão relacionados. Aqui, os arquivos css, js e html são mesclados em um único componente que pode ser testado em unidade. Portanto, a separação de preocupações vem na forma de componentes atômicos individuais que podem ser testados por unidade, em vez de separação de elementos de marcação, estilo e comportamento. Essa segunda abordagem é mais adequada para criar aplicativos da web mais complexos.
editar. Como recebi uma resposta negativa a esse comentário, pensei em revisitá-lo e tentar qualificar parte do meu pov. Infelizmente, qualquer feedback aqui não é particularmente construtivo, mas vi uma discussão interessante em outro lugar que analisa o React, a atual tecnologia em desenvolvimento no momento, um exemplo do mundo real e pergunta se ele quebra a separação de preocupações ou, em particular, se quebra uma das os princípios da metodologia de projeto orientado a objeto do SOLID de Feather.
A perspectiva técnica do desenvolvedor JavaScript
A perspectiva do designer de UX / UI
A perspectiva da equipe
https://hashnode.com/post/does-react-really-violate-separation-of-concern-by-putting-html-and-js-in-a-single-file-cil3bn5hj0011a65347rsdut0
Também na página há um link para uma interessante apresentação de Pete Hunt, do Facebook, onde ele fala sobre componentes, não modelos, e separa as preocupações no aplicativo de idiomas, em vez de separar as preocupações da estrutura, como modelos, css e javascript. etc.
No que diz respeito a separar suas preocupações no idioma do seu aplicativo, isso pode envolver o uso de vários padrões para separar ou desacoplar seu código em um formato modular que pode ser testado em unidade etc.
Portanto, para resumir, separar as preocupações pode depender do seu papel ou ponto de vista, conforme mencionado em outro lugar.
fonte