Dossiers ou projets dans une solution Visual Studio?

Translate

Lors du fractionnement d'une solution en couches logiques, quand est-il préférable d'utiliser un projet séparé plutôt que de le regrouper par dossier?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Par défaut,créez toujours simplement un nouveau dossierau sein du même projet

  • Vous obtiendrez un assemblage unique (sans gymnastique ILMerge supplémentaire)
  • Plus facile à obscurcir (car vous aurez moins de types et de méthodes publics, idéalement aucun)

Séparer votre code source en plusieurs projets n'a de sens que si vous ...

  • Avoir certaines parties du code source qui font partie du projet mais qui ne sont pas déployables par défaut ou pas du tout (tests unitaires, plugins supplémentaires, etc.)
  • Plus de développeurs impliqués et vous souhaitez traiter leur travail comme une boîte noire consommable. (pas très recommandé)
  • Si vous pouvez clairement séparer votre projet en couches / modules isolés et que vous voulez vous assurer qu'ils ne peuvent pas consommer de manière croiséeinternemembres. (également déconseillé car vous devrez décider quel aspect est le plus important)

Si vous pensez que certaines parties de votre code source pourraient être réutilisables, ne le créez toujours pas en tant que nouveau projet. Attendez simplement que vous souhaitiez vraiment le réutiliser dans une autre solution et l'isoler du projet d'origine si nécessaire. La programmation n'est pas un lego, la réutilisation est généralement très difficile et ne se déroule souvent pas comme prévu.

La source
Translate

La séparation des fonctionnalités en projets est souvent une optimisation de l'architecture YAGNI. À quelle fréquence avez-vous vraiment réutilisé ces projets séparés? Si ce n'est pas fréquent, vous compliquez votre développement, construction, déploiement et maintenance pour une réutilisation théorique.

Je préfère de loin la séparation en dossiers (en utilisant les espaces de noms appropriés) et la refactorisation pour séparer les projets lorsque vous avez un cas d'utilisation de réutilisation réel.

La source
Translate

denny a écrit:

Personnellement, je pense que si le code réutilisable est divisé en projets, il est plus simple d'utiliser d'autres endroits que s'il se trouve uniquement dans des dossiers.

Je suis vraiment d'accord avec cela - si vous pouvez le réutiliser, il devrait être dans un projet séparé. Cela dit, il est également très difficile de réutiliser efficacement :)

Ici à SO, nous avons essayé d'être très simple avec trois projets:

  • Projet Web MVC (qui fait un bon travail de séparation de vos couches en dossiers par défaut)
  • Projet de base de données pour le contrôle de source de notre base de données
  • Tests unitaires par rapport aux modèles / contrôleurs MVC

Je ne peux pas parler pour tout le monde, mais je suis content de la simplicité avec laquelle nous l'avons gardé - accélère vraiment les builds!

La source
Translate

Je fais généralement un projet pour l'interface graphique, un projet pour la logique métier, un projet d'accès aux données et un projet pour les tests unitaires.

Mais parfois, il est prudent d'avoir une séparation basée sur les services (si vous utilisez une architecture orientée services) tels que l'authentification, les ventes, etc.

Je suppose que la règle de base sur laquelle je travaille est que si vous pouvez le voir comme un élément qui a une séparation claire des préoccupations, un projet différent pourrait être prudent. Mais je pense que les dossiers par rapport aux projets pourraient simplement être une préférence ou une philosophie.

Personnellement, je pense que si le code réutilisable est divisé en projets, il est plus simple d'utiliser d'autres endroits que s'il se trouve uniquement dans des dossiers.

La source
Translate

Séparer votre code source en plusieurs projets n'a de sens que si vous ... ... Plus de développeurs impliqués et que vous souhaitez traiter leur travail comme une boîte noire consommable. (pas très recommandé) ...

Pourquoi n'est-ce pas recommandé? J'ai trouvé que c'était un moyen très utile de gérer une application avec plusieurs développeurs travaillant sur différentes parties. Rend les enregistrements beaucoup plus faciles, principalement en éliminant pratiquement les fusions. Très rarement, deux développeurs devront travailler sur le même projet en même temps.

La source
Translate

Si vous décidez de créer plusieurs projets, assurez-vous que tous ceux qui ajoutent du code à la solution sont pleinement conscients de leur intention et faites tout ce que vous pouvez pour les amener à comprendre les dépendances entre les projets. Si vous avez déjà essayé de régler le problème lorsque quelqu'un est parti et a ajouté des références qui n'auraient pas dû être là et vous en êtes sorti pendant des semaines, vous comprendrez ce point

La source
Translate

Je pense vraiment qu'il vaut mieux aussi diviser le projet, mais tout dépend de la taille du projet et du nombre de personnes qui y travaillent.

Pour des projets plus importants, j'ai un projet pour

  • accès aux données (modèles)
  • prestations de service
  • l'extrémité avant
  • des tests

J'ai eu le modèle de Rob Connery et son application de vitrine ... semble très bien fonctionner.

mvc-storefront

La source