[c#] Strikte Trennung von GUI und Logik

real-insanity

Erfahrenes Mitglied
Hallo zusammen.
Um mein Tool etwas wartungs- und updatesicherer zu machen möchte ich gerne nun die komplette Logik in eine DLL auslagern.
Sehr viel habe ich bereits schon ausgelagert in Helperklassen, z.B. die Datenbankzugriffe.

Aktuell befindet sich aber noch sehr viel Code in den einzelnen Forms programmiert ist.
Meine Frage ist, weil ich mich noch nicht wirklich damit befasst habe, ob es best praticises zu diesem Thema gibt?

Ich hoffe mir kann hierbei einer helfen und mir rein von den Grundüberlegungen her Hilfestellung leisten kann.

Lieben Gruß
 
Hi

Es gibt diverse Design Patterns dazu. Schau dir doch z.B mal MVC oder MVVM (es gibt noch diverse weitere) an! Welches du verwendest hängt von der verwendeten Technologie und den pers. Vorzügen an
 
Hallo,

ich beschäftige mich auch viel mit diesem Thema und würde dir folgendes vorschlagen.

Bei mir implementiert die Form z. B. ein Callback Interface über das die Logik z. B. die Dialoge(FileOpenDialog, SaveFileDialog) oder diverse MessageBoxen (z. B. für eine Rückfrage ob gespeichert werden soll oder für Fehlermeldungen) der Form aufrufen kann.

Ich habe es mir auch immer angewöhnt, dass Dialoge keine Verarbeitungslogik besitzen sondern einfach nur die Benutzereingabe/-auswahl über Properties zurückgeben (FileOpenDialog, SaveFileDialog). Ich stelle sie mir immer wie eine Funktion vor, bei der die Parameter vom Benutzer kommen.

In der Logikklasse könntest du auch noch diverse Events implementieren, die z. B. den Bearbeitungsstatus eines Vorgangs melden. Die Form kann dann durch EventHandler eine Progressbar aktualisieren.

In vielen Fällen kann es auch sinnvoll sein ein Modul deiner Anwendung als Konsolenanwendung zu kompilieren und als externe Anwendung aufzurufen. So hat man auch die Möglichkeit die Konsolenanwendung unabhängig von der GUI auch automatisiert in einem Skript zu benutzer bzw. zu testen ...

Wenn man seine Software nur über die GUI testen kann ist das in der Regel sehr ineffektiv und aufwändig.
 
Zurück