Muster sind keine Bausteine ​​- sollte ich also keine App auf MVC / MVP-Mustern erstellen?


9

Ich habe diese Seite über Entwurfsmuster gelesen und wie Sie sie beim Schreiben Ihres Codes behandeln sollten. Nach meinem Verständnis, wie der Titel im Link besagt:

Muster sind keine Bausteine.

Wenn ich das richtig verstehe, bedeutet dies, dass ich erst dann ein Entwurfsmuster verwende, wenn dies sinnvoll ist. Richtig? Beginnen Sie nicht damit, dass Sie das Strategiemuster verwenden, sondern warten Sie, bis Sie Code geschrieben haben. Wenn die Verwendung des Strategiemusters für Ihr Design sinnvoll ist, verwenden Sie es.

Behandle ich das MCV / MVP- Muster beim Erstellen von GUI-Anwendungen genauso? Aus den jeweiligen Links geht hervor, dass es sich um ein Architekturmuster handelt.

Angenommen, wenn ich eine GUI-Anwendung erstelle und das MCV / MVP-Muster nicht verwende, mein Code jedoch sauber, lesbar und wartbar ist, ist es immer noch ein Codegeruch / schlechtes Design, dass ich das MCV / MVP-Muster nicht verwendet habe ?

Antworten:


18

Wenn ich das richtig verstehe, bedeutet dies, dass ich erst dann ein Entwurfsmuster verwende, wenn dies sinnvoll ist. Richtig?

Ja.

Beginnen Sie nicht damit, dass Sie das Strategiemuster verwenden, sondern warten Sie, bis Sie Code geschrieben haben. Wenn die Verwendung des Strategiemusters für Ihr Design sinnvoll ist, verwenden Sie es.

Ja. Technisch gesehen können Sie erkennen, dass das Strategiemuster angemessen ist, bevor Sie überhaupt Code schreiben. Dies sollte jedoch daran liegen, dass Sie über das eigentliche Problem nachgedacht und eine Lösung für dieses Problem entworfen haben, von der ich annehme, dass Sie es gemeint haben.

Behandle ich das MCV / MVP-Muster beim Erstellen von GUI-Anwendungen genauso? Aus den jeweiligen Links geht hervor, dass es sich um ein Architekturmuster handelt.

Ja, MVC / MVP / etc sind Architekturmuster. In gewisser Hinsicht macht das keinen Unterschied, da Sie MVC / MVP / etc immer noch nur verwenden sollten, wenn sie sinnvoll sind. wenn es für das eigentliche Problem, das Sie lösen möchten, angemessen ist. Der Unterschied besteht darin, dass Sie, da es auf einer viel höheren Ebene als beispielsweise dem Strategiemuster gilt, in der Regel herausfinden, ob es sinnvoll ist oder nicht, und entscheiden, ob Sie es als Teil von verwenden möchten Ihre Designarbeit, bevor Sie viel Code schreiben.

Denken Sie auch daran, dass "MVC / MVP" kein einzelnes Muster ist, sondern eine sehr große Familie verwandter Muster, und es besteht kein Konsens darüber, was genau als "MVC" oder "MVP" oder "MVVM" oder der Rest des Musters gilt zugehörige Buchstabensuppe.

Angenommen, wenn ich eine GUI-Anwendung erstelle und das MCV / MVP-Muster nicht verwende, mein Code jedoch sauber, lesbar und wartbar ist, ist es immer noch ein Codegeruch / schlechtes Design, dass ich das MCV / MVP-Muster nicht verwendet habe ?

Überhaupt nicht, da MVC / MVP / etc nicht für jede GUI-Anwendung geeignet ist. Zum Beispiel könnten einige GUIs so einfach sein, dass es ein völliger Overkill wäre, oder einige GUIs könnten keinen dauerhaften Status haben, um ein "Modell" usw. einzufügen. Es gibt gute Gründe, warum diese Musterfamilie so beliebt ist, aber sie sind nicht die einzigen Möglichkeiten, eine gute GUI-Software zu schreiben.

Außerdem bedeutet ein "Codegeruch" normalerweise etwas über einen bestimmten Codeausschnitt, das ein Symptom für ein größeres Problem sein kann. Wenn Ihr gesamter Code ausnahmslos "sauber, lesbar und wartbar" ist, haben Sie fast per Definition keine Codegerüche (außer vielleicht ein paar "falsch positiven" Codegerüchen, die keine wirklichen Probleme anzeigen ).

Um den Titel Ihrer Frage zu beantworten: "Wie wird das MVC / MVP-Muster behandelt?", Würde ich sagen: Lesen Sie, warum diese Muster so beliebt sind, dh welche Probleme sie zu lösen versuchen, damit in Zukunft Sie können anhand dieser Muster erkennen, ob Ihr aktuelles Problem möglicherweise gelöst wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.