Je suis développeur junior parmi les seniors et j'ai beaucoup de mal à comprendre leurs pensées, leur raisonnement.
Je lis en DDD ( Domain-Driven Design ) et ne comprends pas pourquoi nous devons créer autant de classes. Si nous suivons cette méthode de conception de logiciel, nous aboutissons à 20-30 classes pouvant être remplacées par au plus deux fichiers et 3-4 fonctions. Oui, cela pourrait être compliqué, mais c'est beaucoup plus facile à gérer et à lire.
Chaque fois que je veux voir ce que fait quelque chose EntityTransformationServiceImpl
, je dois suivre beaucoup de classes, interfaces, appels de fonction, constructeurs, leur création, etc.
Mathématiques simples:
- 60 lignes de code factice contre 10 classes X 10 (disons que nous avons des logiques totalement différentes) = 600 lignes de code désordonné contre 100 classes + quelques autres pour les envelopper et les gérer; n'oubliez pas d'ajouter l'injection de dépendance.
- Lecture de 600 lignes de code en désordre = un jour
- 100 cours = une semaine, oublie toujours lequel fait quoi, quand
Tout le monde dit que c'est facile à maintenir, mais pour quoi? Chaque fois que vous ajoutez une nouvelle fonctionnalité, vous ajoutez cinq classes supplémentaires avec des fabriques, des entités, des services et des valeurs. J'ai l'impression que ce type de code se déplace beaucoup plus lentement que le code en désordre.
Supposons que si vous écrivez du code compliqué de 50 Ko en un mois, le processus DDD nécessite de nombreuses révisions et modifications (les tests ne me dérangent pas dans les deux cas). Un simple ajout peut prendre une semaine sinon plus.
En un an, vous écrivez beaucoup de code en désordre et pouvez même le réécrire plusieurs fois, mais avec le style DDD, vous n’avez toujours pas assez de fonctionnalités pour concurrencer le code en désordre.
S'il vous plaît, expliquez. Pourquoi avons-nous besoin de ce style DDD et de nombreux motifs?
UPD 1 : J'ai reçu tellement de bonnes réponses. Pouvez-vous ajouter un commentaire quelque part ou modifier votre réponse avec le lien pour la liste de lecture (vous ne savez pas par quoi commencer, DDD, Modèles de conception, UML, Code complet, Refactoring, Pragmatique,. .. tant de bons livres), bien sûr avec la séquence, de sorte que je puisse aussi commencer à comprendre et devenir senior comme certains d'entre vous.