Je pense que cela dépend d'un projet spécifique.
Par exemple, si les différents domaines d'activité sont totalement indépendants les uns des autres, je m'organiserais par domaine d'activité.
Mais s'il y a du code partagé entre les domaines d'activité, ou plutôt, les domaines d'activité sont différentes variantes de la même base de code, alors il semble plus logique de les organiser par domaine technique. Et si vous utilisez n'importe quel type de langage orienté objet, vous pouvez probablement sous-classer vos contrôleurs génériques, modèles, etc. dans vos fichiers spécifiques à l'entreprise pour les rendre plus fins.
Il y a également un (doré) à mi-chemin entre les deux: supprimer le code partagé dans son propre domaine et l'utiliser dans d'autres domaines. Cela vous donne une présentation optimisée, mais permet un code partagé entre les domaines d'activité.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
PS. Je pense que la plupart des frameworks s'organisent par domaine technique simplement parce qu'ils ont tendance à s'attendre à ce que vous mélangiez différents domaines commerciaux en un seul projet uniquement si vous avez partagé du code et sinon vous créeriez des projets séparés.
ÉDITER:
Par exemple, supposons qu'il existe une application Web qui gère l'entrepôt d'une entreprise. Sous forme générique, cela peut s'appliquer à de nombreuses entreprises, mais chacune d'entre elles peut avoir des spécificités qui ne sont pas remplies et leur interdit d'acheter. Par exemple, l'une d'entre elles a déployé des tablettes sur les chariots élévateurs et a besoin d'une vue spéciale pour elles tandis qu'une autre souhaite pour organiser les éléments en trois niveaux au lieu de la valeur par défaut de deux.
Vous pouvez bien sûr bifurquer le projet pour chacune de ces entreprises. Mais si le cadre / langage le permet, vous pouvez utiliser des sous-classes ou des plugins, etc. pour personnaliser les éléments du projet générique en fonction des besoins de chaque client et les organiser dans les dispositions du domaine d'activité.
Par exemple, si le projet générique exporte vers JSON uniquement l'élément lui-même, Domain1 peut sous-classer le contrôleur et le faire exporter également les problèmes de livraison récents.
Et si vous constatez plus tard que Domain1 a un composant qui est également valide pour Domain2, vous pouvez en extraire la version générique vers Shared.
Comme vous l'avez dit, de nombreux frameworks s'organisent par domaine technique et c'est ce que j'ai utilisé pour l'instant, juste parce que mon FW de choix rend cela plus facile. Mais avec un peu (ou beaucoup) d'huile de coude, je pense que je pourrais également réécrire les chemins d'inclusion pour prendre en charge la mise en page du domaine d'activité.