Je continue de voir que DDD (Domain Driven Design) est beaucoup utilisé dans les articles - j'ai lu l'entrée de Wikipédia sur DDD, mais je ne peux toujours pas comprendre ce que c'est réellement et comment je procéderais pour l'implémenter dans la création de mes sites?
Premièrement, si vous ne savez pas que vous en avez besoin, il est possible que vous n'en ayez pas besoin. Si vous ne reconnaissez pas les problèmes que DDD résout, vous n’avez peut-être pas ces problèmes. Même les défenseurs de DDD souligneront fréquemment que DDD est uniquement destiné aux grands projets (> 6 mois).
En supposant que vous lisiez encore à ce stade, voici mon point de vue sur DDD:
DDD consiste à essayer de faire de votre logiciel un modèle de système ou de processus réel. En utilisant DDD, vous êtes censé travailler en étroite collaboration avec un expert de domaine qui peut expliquer le fonctionnement du système réel. Par exemple, si vous développez un système permettant de placer des paris sur des courses de chevaux, votre expert en domaines peut être un bookmaker expérimenté.
Entre vous et l'expert du domaine, vous construisez un langage omniprésent (UL), qui est essentiellement une description conceptuelle du système. L'idée est que vous devriez être capable d'écrire ce que le système fait de manière à ce que l'expert du domaine puisse le lire et vérifier qu'il est correct. Dans notre exemple de pari, le langage omniprésent inclurait la définition de mots tels que "race", "pari", "cote", etc.
Les concepts décrits par l'UL constitueront la base de votre conception orientée objet. DDD fournit des indications claires sur la manière dont vos objets doivent interagir et vous aide à les diviser dans les catégories suivantes:
DDD recommande également plusieurs modèles:
À ce stade, je dois dire que si vous n’avez jamais entendu parler de ces choses auparavant, vous ne devriez pas essayer d’utiliser DDD pour les projets pour lesquels vous avez une échéance. Avant d’essayer de DDD, vous devez vous familiariser avec modèles de conception et modèles de conception d’entreprise . Sachant cela, DDD est beaucoup plus facile à comprendre. Et, comme mentionné ci-dessus, il existe une introduction gratuite à DDD disponible auprès d’InfoQ (où vous pouvez également trouver des conférences sur DDD).
Prenons StackOverflow comme exemple. Au lieu de commencer à concevoir des formulaires Web, vous vous concentrez d'abord sur la modélisation orientée objet des entités de votre domaine de problèmes, par exemple Utilisateurs, Questions, Réponses, Votes, Commentaires, etc. La conception étant guidée par les détails du problème domaine il est appelé conception axée sur le domaine .
Vous pouvez en lire plus dans livre d'Eric Evans .