Ich bin Junior-Entwickler unter Senioren und habe große Probleme damit, ihr Denken und Denken zu verstehen.
Ich lese Domain-Driven Design (DDD) und kann nicht verstehen, warum wir so viele Klassen erstellen müssen. Wenn wir diese Methode zum Entwerfen von Software befolgen, erhalten wir 20 bis 30 Klassen, die durch höchstens zwei Dateien und 3-4 Funktionen ersetzt werden können. Ja, das könnte chaotisch sein, aber es ist viel wartbarer und lesbarer.
Immer wenn ich sehen will, was eine Art von EntityTransformationServiceImpl
macht, muss ich vielen Klassen, Interfaces, ihren Funktionsaufrufen, Konstruktoren, ihrer Erstellung und so weiter folgen.
Einfache mathematik:
- 60 Zeilen Dummy-Code im Vergleich zu 10 Klassen X 10 (sagen wir, wir haben völlig andere Logiken) = 600 Zeilen chaotischen Codes im Vergleich zu 100 Klassen + einige mehr, um sie zu verpacken und zu verwalten; Vergessen Sie nicht, die Abhängigkeitsinjektion hinzuzufügen.
- Lesen von 600 Zeilen unordentlichem Code = ein Tag
- 100 Stunden = eine Woche, vergiss immer noch, welche was wann macht
Jeder sagt, es sei einfach zu warten, aber wofür? Jedes Mal, wenn Sie neue Funktionen hinzufügen, fügen Sie fünf weitere Klassen mit Fabriken, Entitäten, Diensten und Werten hinzu. Ich glaube, diese Art von Code bewegt sich viel langsamer als chaotischer Code.
Nehmen wir an, wenn Sie in einem Monat 50K LOC-Code schreiben, erfordert die DDD-Sache viele Überprüfungen und Änderungen (ich habe nichts dagegen, in beiden Fällen zu testen). Eine einfache Zugabe kann eine Woche dauern, wenn nicht mehr.
In einem Jahr schreiben Sie viel chaotischen Code und können ihn sogar mehrmals umschreiben. Mit dem DDD-Stil verfügen Sie jedoch immer noch nicht über genügend Funktionen, um mit chaotischem Code zu konkurrieren.
Bitte erkläre. Warum brauchen wir diesen DDD-Stil und viele Muster?
UPD 1 : Ich habe so viele großartige Antworten erhalten. Könnt ihr bitte irgendwo einen Kommentar hinzufügen oder eure Antwort mit dem Link für die Leseliste bearbeiten (nicht sicher, von welchem Anfang an, DDD, Design Patterns, UML, Code Complete, Refactoring, Pragmatic, ...). .. so viele gute Bücher), natürlich mit Sequenz, so dass ich auch anfangen kann zu verstehen und älter zu werden wie einige von euch.