Ao desenvolver um sistema ou aplicativo que você planeja usar com uma certa estrutura, é uma prática recomendada projetar o sistema sem a estrutura em mente ou é melhor projetar o sistema com a mentalidade "bem, a estrutura teria um tempo mais fácil com isso".
development-process
systems
Robert Pounder
fonte
fonte
Respostas:
Seu design deve atender às necessidades dos clientes o mais próximo possível. Lembre-se de que o design inclui pequenas coisas como:
Nenhuma dessas coisas deve ser ditada pela estrutura. Se estiver claro que você estará lutando com sua estrutura para atingir esses objetivos, escolha uma nova estrutura que o ajudará a atingir esses objetivos antes de começar a escrever o código.
Depois de escolher um conjunto de ferramentas apropriado (a estrutura é uma ferramenta), recomendo usar as ferramentas da maneira como elas foram projetadas para serem usadas. Quanto mais você se desvia do design da estrutura, mais aumenta a curva de aprendizado da sua equipe e maior a chance de algo dar errado.
Em resumo
Pensamentos adicionais:
Após mais de 20 anos de engenharia de software e usando várias estruturas, aprendi algumas lições. Todas as estruturas são uma faca de dois gumes: ambas restringem e permitem. O problema com a decisão de sua estrutura antes de analisar os 3 grandes mencionados acima é que você pode comprometer uma boa experiência do usuário para uma medíocre (na melhor das hipóteses). Ou você pode ser forçado a desviar-se do design de estruturas para obter algumas funcionalidades específicas.
fonte
Estruturas naturalmente influenciam o design de módulos e subsistemas específicos (como um front-end da GUI). Como a outra resposta mencionada, você terá dificuldades se lutar contra o (s) quadro (s) escolhido (s).
No entanto, de maneira mais ampla, você deve evitar deixar que uma única estrutura ou tecnologia imponha ou conduza o "quadro geral" da arquitetura geral do sistema. A maioria das estruturas de aplicativos de uso geral não incentiva isso; portanto, se você estiver escrevendo todo o sistema em torno de uma estrutura, provavelmente estará fazendo algo que os autores dessa estrutura não pretendiam.
Você provavelmente usará muitas estruturas diferentes para resolver problemas diferentes; À medida que seu sistema se torna mais complexo, você precisa ter cuidado para não criar a Big Ball Of Mud . Sempre que possível, mantenha seu sistema modular e pouco acoplado. Algumas estruturas podem ser melhor mantidas atrás das abstrações gravando wrappers e adaptadores que 'ocultam' os fluxos de trabalho específicos da estrutura de outros componentes. Os kits de ferramentas da GUI tendem a servir apenas a funcionalidade da interface gráfica do usuário, portanto, esses módulos da GUI devem ser mantidos afastados do resto do sistema.
Estruturas de uso geral (como estruturas da interface do usuário, estruturas da camada de dados etc.) não existem para prescrever a arquitetura completa do seu sistema - no máximo, podem prescrever o design de um componente ou módulo; por exemplo, algumas tecnologias de GUI são voltadas para padrões específicos de MV *.
A arquitetura geral do seu sistema deve ser orientada principalmente pelos requisitos de negócios . Você pode se apoiar fortemente em uma ferramenta específica (por exemplo, uma ferramenta de middleware de mensagens ou uma estrutura ORM) para amarrar tudo, mas se você encapsulou a estrutura em uma abstração como uma classe 'service' é menos provável que você se sinta constrangido por essa estrutura quando encontrar suas limitações.
Tente ter em mente o seguinte para seu design geral:
fonte
Sim, você deve ficar o mais próximo possível do que a estrutura "diz" para você fazer.
A razão é simplesmente que, quanto mais você se aproximar da maneira de "pensar" da estrutura, mais fácil você poderá conversar com outros desenvolvedores sobre seus problemas / idéias que também usam essa estrutura.
Você aumenta a interoperabilidade e a facilidade de uso para outras pessoas que o usam posteriormente, entenderá e incorporará melhor os tutoriais ou soluções comuns se seguir a filosofia subjacente do que quer que esteja usando.
A única boa razão pela qual consigo pensar por que você "quebraria" a estrutura é que você absolutamente precisa de algo que ela não pode fornecer, dada sua configuração / aplicação "padrão" de princípios. Mas, então, pode não ser a estrutura certa para começar.
Basicamente, isso pode ser aplicado a outras decisões também. Você deve usar o idioma que você está usando, tanto quanto ele está destinado a ser utilizado, porque isso torna as coisas mais fácil se você está falando a mesma língua que todos os outros.
fonte