MVVM - Code review, Verbesserungsvorschläge

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von BornToBeRoot.

    MVVM - Code review, Verbesserungsvorschläge

    Hallo Community,

    könnte mal jemand über meinen Code drüber schauen und Verbesserungsvorschläge geben.

    Das hier ist mein erstes "größeres" Project mit C#/WPF und ich versuche das MVVM Prinzip umzusetzten, also View, ViewModel und Model zu trennen. Jedoch gestaltet sich das meiner Meinung nach relativ schwierig...
    Gefühlt jeder Beitrag (den ich im Internet finde) wiederspricht sich, was die aufteilung vom Code angeht...

    Hier erstmal die Source: github.com/BornToBeRoot/NETworkManager/tree/master/Source

    1) Frage
    Soll ich das View und ViewModel voneinander trennen (heißt ViewModel in einen eigenen Assembly) oder sogar beides in einen Ordner um leichter navigieren zu können:

    Also z.B.
    - Applications
    -- IPScannerUserControl.xaml
    -- IPScannerUserControl.xaml.cs
    -- IPScannerViewModel.cs

    Mach das einen Unterschied, wenn irgendwann mal UnitTest machen möchte?

    2) Frage
    Soll ich die Settings in ein eigenes Assembly auslagern (wie ich es derzeit ist) oder lieber in der "Hauptanwendung" (Also im View) belassen.

    3) Frage
    Gehören so Sachen wie eigene Controls oder der Helper\BindingProxy.cs in die NETworkManager.Utilities ?


    Würde mich über konstruktive Kritik freuen, gerne auch z.B. über Teamspeak (wenns zu viel zu schreiben wäre)

    Viele Grüße
    BornToBeRoot
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    @BornToBeRoot

    erstmal Kompliment - deine Anwendung ist optisch und, davon gehe ich aus, funktionell richtig gut.

    ​Zu deiner MVVM Frage,
    ​ich denke das du da was nicht richtig verstanden hast.

    ​Jedes View wird von einem ViewModel aus angesprochen.
    ​Was in der letzten Konsequenz bedeuten würde, dass in Beispiel.xaml.cs nicht ein Gramm Code steht.
    ​(Konstruktor ausgenommen).

    ​MVVM ist nicht - alles in eigene Projekte zu stecken.
    ​In deinem Fall sollte alles in einem Projekt Platz finden, das angesprochene UnitTest ist dann ein eigenes Projekt.

    Pack View, ViewModel und Model in eigene Ordner des gleichen Projekts.
    ​Auch Helper-, Extensions-, EventArgs-Klasse uvm. immer schön in eigene Ordner aber in einem Projekt.

    Gruss

    mikeb69
    Erstmal vielen Dank das du dir Zeit genommen hast drüber zu schauen. Werde die Anwendung auch demnächst mal hier vorstellen... aber erst kommen noch ein paar mehr Funktionen.

    Das ich alles in ein Projekt packen sollte sehe ich ein (ist ja derzeit noch nicht so groß). Wenn ich dich richtig verstanden habe, sollen die EventArgs nicht unter Models/... ?
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    @BornToBeRoot

    sollen die EventArgs nicht unter Models

    so mach ich das, was nicht bedeuten soll, dass das Allgemeinverbindlich ist.


    In meinen Projekten teile ich die Dateien gerne in viele Unterordner auf - der Übersicht halber.

    Gruss

    mikeb69