Je fais habituellement un projet pour l'interface graphique, un projet pour la logique métier, un projet pour l'accès aux données et un projet pour les tests unitaires.
Mais il est parfois 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 d'or sur laquelle je travaille est que si vous pouvez le voir comme un composant qui a une séparation claire des préoccupations, alors un projet différent pourrait être prudent. Mais je pense que les dossiers par rapport aux projets pourraient n'être qu'une préférence ou une philosophie.
Je pense personnellement 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.