DDD serialisierter Artikel
Ich denke, dass es jeden Tag verschiedene Diskussionen über das Gute und das Schlechte von Design gibt, aber gibt es eine klare Definition von "gutem Design" und "schlechtem Design"? Obwohl es in den Gedanken jeder Person vage oder fragmentarisch ist, scheint es im Team nicht viele Definitionen von gut oder schlecht zu geben.
Ich denke, es lohnt sich, in jedem Projekt zu diskutieren, aber ich denke, es ist einfacher zu diskutieren, ob es einen Standard gibt. Schauen wir uns also eine der Definitionen von "schlechtem Design" an, die von Robert Cecil Martin, alias Onkel Bob, vorgeschlagen wurden, der das Prinzip der Objektorientierung befürwortete.
Vorher möchte ich Onkel Bob vorstellen.
Robert Cecil Martin(wikipedia)
Der Autor des berühmten "sauberen Codes" ist leicht zu verstehen. Darüber hinaus ist er Verfechter des SOLID-Prinzips, eines objektorientierten Entwurfsprinzips, und Mitautor der Erklärung zur agilen Softwareentwicklung. Die Auswirkungen auf die Softwareindustrie sind unermesslich.
(Nebenbei habe ich es in [Was ist die einfachste Architektur, um mit der Implementierung mit domänengesteuertem Design zu beginnen] eingeführt (http://little-hands.hatenablog.com/entry/2017/10/04/231743) Dies ist auch der Befürworter der Anwendungsarchitektur "Clean Architecture". Die Site, die betrieben wird, wird auch als Clean Coder bezeichnet, und wir sind besonders über den Namen clean informiert. Es scheint, dass es das gibt. Es scheint, dass es von hier war, als ich mich fragte, woher das "Sauber" der sauberen Architektur kam.)
Der Originaltext, auf den dieses Mal verwiesen wird, befindet sich weiter auf der Seite The Principles of OOD der Old UncleBob Site. , Artikel des Abhängigkeitsinversionsprinzips. Dies ist ein Zitat und eine Zusammenfassung des Inhalts.
Ein Design mit den folgenden drei Eigenschaften, auf die sich alle Ingenieure einigen können, wird als "schlechtes Design" bezeichnet.
- Rigidity :
It is hard to change because every change affects too many other parts of the system.
Übersetzen Sie es ins Japanische und schreiben Sie dann eine Teilübersetzung und eine Zusammenfassung der danach beschriebenen Details.
Es ist schwierig zu ändern, da jede Änderung viele andere Teile des Systems betrifft.
Die Ursache ist, dass Sie für eine Änderung eine Änderungskette an den abhängigen Modulen vornehmen müssen.
Wenn der Designer nicht vorhersagen kann, inwieweit Änderungen vorgenommen werden müssen, sind die Auswirkungen und Kosten unvorhersehbar. Die Behörden lehnen es dann ab, Änderungen zu genehmigen, was einen starren Druck auf sie ausübt.
Gegenmaßnahmen Möglicherweise haben Sie gesagt: "Reduzieren Sie die Anzahl der abhängigen Module" und "Machen Sie die abhängigen Module logisch ableitbar".
Eine kontrastierende Eigenschaft ist Flexibilität.
Durch Änderungen werden unerwartete Teile des Systems beschädigt.
Oft können Änderungen neue Probleme in Bereichen verursachen, die konzeptionell nicht relevant sind. Dies führt dazu, dass das Wartungsteam weniger zuverlässig ist. Je weiter Sie sich weiterentwickeln, desto mehr Probleme treten an Stellen auf, die irrelevant erscheinen, und jedes Mal, wenn Sie eine Korrektur vornehmen, treten weitere Probleme auf ... und der Arbeitsaufwand für die Wartung nimmt weiter zu.
Sie können sich die Gegenmaßnahmen so vorstellen, dass sie "nur von den konzeptionell verwandten Modulen abhängen" und "innerhalb des Bereichs, in dem die abhängigen Module logisch abgeleitet werden können", wie in 1.
Eine kontrastierende Eigenschaft ist Robustheit.
Stark mit der aktuellen Anwendung gekoppelt und in einer anderen Anwendung schwer wiederzuverwenden.
Wenn ein Teil einer Implementierung stark von etwas Geschäftsspezifischem abhängt, ist die Wiederverwendbarkeit dieser Implementierung gering. Wenn Designer die Wiederverwendung von Implementierungen untersuchen, stellen sie fest, dass zum Trennen und Wiederverwenden von Modulen viel Arbeit erforderlich ist, und geben in vielen Fällen die Wiederverwendung auf.
Erhöht die Gegenmaßnahme "den Kohäsionsgrad des Moduls"?
Eine kontrastierende Eigenschaft ist die Wiederverwendbarkeit.
Was denken Sie. Es kann leichter vorstellbar sein, "von innen nach außen aus der Definition von schlechtem Design" zu denken, als "Definition von gutem Design".
Es kann auch als Grundlage verwendet werden, um Ihre eigenen Ideen und Teamrichtlinien auf dieser Grundlage zu überdenken.
Recommended Posts