none
MVVM - Bin ich auf dem richtigen Weg? RRS feed

  • Frage

  • Hallo liebe Community

    Ich trage nun bereits seit Monaten Videos, Forenbeiträge und Tutorials zusammen da ich mein nächstes Projekt gerne nach dem MVVM Pattern aufbauen möchte. Da mein Englisch nicht ganz so gut ist, kann ich leider kein gutes Buch zu rate ziehen und auf Deutsch gibt's ja leider nichts wirklich gutes.

    Mir ist auch klar das das MVVM ein Pattern ist und das jeder anders an die ganze Thematik ran geht, mich würde nur Interessieren ob ich überhaupt die richtige Richtung einschlage und/oder ob ich mir an der ein oder anderen Stelle Probleme einhandle.

    Was ist mein Ziel:

    • Dialoge und Fenster über das VM richtig öffnen und Kontext weiterreichen.
    • Die Richtige Trennung zwischen Model - View - ViewModel
    • Die Möglichkeit zu haben so viel Code wie möglich über UnitTests abdecken zu können.

    Ich habe nach Monaten des "grübelns" ein kleines Beispielprojekt erstellt wie ICH denke das genau so MVVM interpretiert werden könnte. Inkl. Dialogen und UnitTests.

    Da Ihr mir beim letzten mal soooo toll weiter geholfen habt, dachte ich mir.... ich lade das Projekt hier mal hoch und vielleicht kann mir der ein oder andere ja Tipps geben wie es besser oder vielleicht sogar Einfacher ginge.

    MVVM_Demoprojekt

    Ich danke euch allen vielmals im Voraus für die Unterstützung
    mfg
    Sascha

    Sonntag, 25. Oktober 2015 20:12

Antworten

  • Hi Sascha,
    zuerst ist zu bemerken, dass MVVM kein Dogma ist und der Programmierer wie ein Künstler sehr viele Freiheiten hat, um das vorgegebene Ziel zu erreichen. Deine konkrete Frage dazu kann ich nicht erkennen.

    Das Projekt selbst bringt im UnitTest keine 100% Erfolge. Zur Laufzeit (im Debug aus dem VS) stürzt es ab bei Neuanlage von Details, dasselbe zur Laufzeit ohne VS. Es fehlt eine zentrale Fehlerbehandlung.

    Die Projektstruktur (Abhängigkeiten) erscheint etwas chaotisch. Schau Dir dazu mal die CodeMap an (falls Deine Version des VS das unterstützt).

    RaiseProp würde ich auch mit CallerMamberName zulassen.

    Du implementierst IDisposeable, ich habe aber nicht gesehen, wo Du das nutzt.

    Nach kurzem Überfliegen, sieht das Projekt ansonsten wie ein MVVM-Projekt aus. Schön wäre in der Projektmappe noch eine Textdatei, die kurz die Projektstruktur beschreibt. 

    Zu MVVM habe ich auf meiner Homepage ein paar Gedanken.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut


    • Bearbeitet Peter Fleischer Montag, 26. Oktober 2015 04:25
    • Als Antwort markiert NoFear23m Dienstag, 10. November 2015 17:11
    Montag, 26. Oktober 2015 04:23
  • Hi Sascha,
    die Projektstruktur passt schon. Ich würde nur die SPS-Projekte zusammenfassen.

    Testen zu 100% ist nicht machbar, wenn Du damit die Codeüberdeckung meinst. Eine Codeüberdeckung von mehr als 80% wird aber allgemein als ausreichend für die Erzielung eines stabilen Codes betrachtet.

    Ob die Messenger-Klasse Deinen Anforderungen entspricht, kann ich ohne Kenntnis der Aufgabenstellung nicht sagen. Die Herangehensweise mit dem Registrieren der Fenster bzw. Dialoge lässt eine lose Kopplung und problemlose Erweiterung beim Wachsen der Anwendung zu.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    • Als Antwort markiert NoFear23m Dienstag, 10. November 2015 17:11
    Dienstag, 10. November 2015 06:50

Alle Antworten

  • Hi Sascha,
    zuerst ist zu bemerken, dass MVVM kein Dogma ist und der Programmierer wie ein Künstler sehr viele Freiheiten hat, um das vorgegebene Ziel zu erreichen. Deine konkrete Frage dazu kann ich nicht erkennen.

    Das Projekt selbst bringt im UnitTest keine 100% Erfolge. Zur Laufzeit (im Debug aus dem VS) stürzt es ab bei Neuanlage von Details, dasselbe zur Laufzeit ohne VS. Es fehlt eine zentrale Fehlerbehandlung.

    Die Projektstruktur (Abhängigkeiten) erscheint etwas chaotisch. Schau Dir dazu mal die CodeMap an (falls Deine Version des VS das unterstützt).

    RaiseProp würde ich auch mit CallerMamberName zulassen.

    Du implementierst IDisposeable, ich habe aber nicht gesehen, wo Du das nutzt.

    Nach kurzem Überfliegen, sieht das Projekt ansonsten wie ein MVVM-Projekt aus. Schön wäre in der Projektmappe noch eine Textdatei, die kurz die Projektstruktur beschreibt. 

    Zu MVVM habe ich auf meiner Homepage ein paar Gedanken.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut


    • Bearbeitet Peter Fleischer Montag, 26. Oktober 2015 04:25
    • Als Antwort markiert NoFear23m Dienstag, 10. November 2015 17:11
    Montag, 26. Oktober 2015 04:23
  • Hallo Peter

    Danke für deine Antwort. In diesem Beispiel habe ich mich ein wenig herumgespielt, es läuft nicht alles da ich immer wieder was ausprobiert hatte. Mit UnitTests bin ich noch ganz am Anfang, richtig Testen will auch gelernt sein. ;-)

    Ich habe das Glück das meine VS Version CodeMap unterstützt, sehe (als leihe) aber jetzt keine besonderen Fehler mit den Abhängigkeiten. (Außer vielleicht das das VM das Model als Referenz hat, aber ich hätte nun keine Ahnung wie ich das korrigieren könnte.)
    Was meinst du mit Chaotisch? was würdest DU als Profi ändern?

    Deine konkrete Frage dazu kann ich nicht erkennen.

    • Liege ich mit der Projektstruktur so richtig?
    • Ist mit der Projektstruktur Testen von 100% überhaupt machbar?
    • Mache ich das mit dem öffnen von Fenstern bzw. Dialogen (WindowsMessenger) richtig?

    Besten Dank im Voraus
    mfg
    Sascha

    Montag, 26. Oktober 2015 07:42
  • Hi Sascha,
    die Projektstruktur passt schon. Ich würde nur die SPS-Projekte zusammenfassen.

    Testen zu 100% ist nicht machbar, wenn Du damit die Codeüberdeckung meinst. Eine Codeüberdeckung von mehr als 80% wird aber allgemein als ausreichend für die Erzielung eines stabilen Codes betrachtet.

    Ob die Messenger-Klasse Deinen Anforderungen entspricht, kann ich ohne Kenntnis der Aufgabenstellung nicht sagen. Die Herangehensweise mit dem Registrieren der Fenster bzw. Dialoge lässt eine lose Kopplung und problemlose Erweiterung beim Wachsen der Anwendung zu.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    • Als Antwort markiert NoFear23m Dienstag, 10. November 2015 17:11
    Dienstag, 10. November 2015 06:50
  • Hallo Peter

    Danke für deine Antwort. Das Hilft mir schon ungemein. Man weis bei MVVM irgendwie am Anfang nie genau ob man auf dem richtigen Weg ist. Oft glaubt man das es so wie man es macht richtig sei, später im Projekt merkt man dann aber doch das man sich an der einen oder anderen Stelle total vertan hat.

    Ich bin gerade dabei mich mit Fakes für UnitTests zu beschäftigen um zu sehen ob ich auch diesen Part auf die reihe bekomme, aber auch hier findet man hald nicht wirklich gute Erklärungen in Deutsch. Mir kommt vor das sich nicht sehr viele mit dem Thema testen beschäftigen. ;-)

    Danke für deine Mühen und das du dir das Projekt so genau angesehen hast.

    Schöne Grüße aus Österreich
    Sascha

    Dienstag, 10. November 2015 17:11