Pergunta

Quando spliting uma solução em camadas lógicas, quando é melhor usar um projeto separado em agrupar por uma pasta?

Foi útil?

Solução

Por padrão, sempre basta criar nova pasta dentro do mesmo projeto

  • Você terá único assembly (sem o adicional ILMerge de ginástica)
  • Mais fácil para ofuscar (porque você vai ter menos público e tipos de métodos, de preferência nenhum)

Separar seu código-fonte em vários projetos faz sentido se você...

  • Tem algumas partes do código-fonte que são parte do projeto, mas não pode ser implantada por padrão, ou (testes de unidade, plugins extras, etc.)
  • Mais desenvolvedores envolvidos e você quer tratar o seu trabalho como consumíveis caixa preta.(não é muito recomendado)
  • Se você pode separar claramente o seu projeto em camadas isoladas/módulos e você quer certificar-se de que eles não podem cruzar-consumir interno membros.(também não é recomendado, pois você precisará para decidir qual aspecto é o mais importante)

Se você acha que algumas partes de seu código fonte pode ser reutilizável, ainda não criá-lo como um novo projeto.Basta esperar até que você realmente vai querer reutilizá-lo em outra solução e isolá-lo de fora do projeto original, conforme necessário.Programação não é um lego, reaproveitar é geralmente muito difícil e, muitas vezes, não acontecem conforme o planejado.

Outras dicas

Separando características dos projetos, muitas vezes é um YAGNI otimização de arquitetura.Quantas vezes você reutilizados os projetos separados, realmente?Se não é uma ocorrência frequente, você está complicando o seu desenvolvimento, construção, implementação e manutenção teórico reutilização.

Eu prefiro muito mais separar em pastas (uso adequado de espaços de nomes) e refatoração para projetos separados quando você tem uma vida real de reuso de casos de uso.

denny escreveu:

Eu, pessoalmente, sinto que, se o código reutilizável é dividida em projetos, é mais simples utilizar outros lugares do que se for apenas em pastas.

Eu realmente concordo com isso - se você pode reutilizá-lo, ele deve estar em um projeto separado.Com o que disse, também é muito difícil para reutilizar de forma eficaz :)

Aqui no ASSIM, tentamos ser muito simples com três projetos:

  • Web MVC de projeto (que não faz um bom trabalho de separação das camadas em pastas por padrão)
  • Projeto de banco de dados para controle de origem de nossos DB
  • Testes de unidade contra MVC modelos/controladores

Eu não posso falar por todos, mas estou feliz com a forma simples que mantivemos ele realmente acelera a cria junto!

Eu costumo fazer um projeto para o GUI é um projeto para a lógica de negócios de um projeto para o acesso a dados e um projeto para testes de unidade.

Mas às vezes é prudente ter de separação baseada em serviços (se você estiver usando uma arquitetura orientada a serviços), Tais como Autenticação, Vendas, etc.

Eu acho que a regra de ouro que eu trabalho fora é que se pode vê-lo como um componente que tem uma clara separação de preocupações, em seguida, um projeto diferente, poderia ser prudente.Mas eu acho que as pastas versus projetos poderia ser apenas uma preferência ou filosofia.

Eu, pessoalmente, sinto que, se o código reutilizável é dividida em projetos, é mais simples utilizar outros lugares do que se for apenas em pastas.

Separar seu código-fonte em vários projetos faz sentido se você......Mais desenvolvedores envolvidos e você quer tratar o seu trabalho como consumíveis caixa preta.(não muito recomendado) ...

Por isso não é recomendado?Eu descobri que é uma maneira muito útil de gerir um aplicativo com vários programadores a trabalhar em diferentes partes.Faz checkin muito mais fácil, principalmente por praticamente eliminar a mescla.Muito raramente dois devs tem que trabalhar no mesmo projeto ao mesmo tempo.

Se você vai para a criação de vários projetos, certifique-se de que todos os que adiciona código para que a solução seja totalmente ciente da intenção deles e fazer tudo o que você pode levá-los a compreender as dependências entre os projetos.Se você já tentou acabar com a confusão quando alguém passou e adicionadas referências que não deve ter sido lá e conseguiu fugir com ele por semanas você vai entender este ponto

Eu realmente acho que é melhor dividir o projeto, bem como, mas tudo depende do tamanho do projeto e o número de pessoas trabalhando nele.

Para projetos maiores, eu tenho projetos para

  • acesso a dados (modelos)
  • serviços
  • front-end
  • testes

Eu tenho o modelo do Rob Connery e sua loja de aplicativos...parece funcionar muito bem.

mvc-loja

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top