Frage

In Windows Forms, C #, .NET 3.5, VS2008 ...

Was ist ein guter Weg, um den Code für einen Menustrip (oder jede komplexe Kontrollgruppe), und es Kindermenüpunkte, aus dem Rest meiner Form zu isolieren?

Zum Beispiel, wenn ich einen Menustrip mit einer Reihe von Menüs und jedes Menü hat eine Anzahl von Menüpunkten, die alle Klickereignisse haben, eine Tonne von Code in beide Datei der Form.Desinger.cs gespuckt wird, und auch die Form.cs Datei. Dies verursacht keine Probleme technisch, sondern fühlt sich einfach falsch an einem Ort abgeladen so viel Zeug zu haben (zusammen mit allem anderen in Form).

Ausführen des Codemetrik auf mein gesamtes Projekt, wird das Formular markiert die schlechteste Wartbarkeitsindex jeder Projektdatei haben. Normalerweise würde ich nicht zu dogmatisch sein, um die Richtung des Codemetrik Werkzeug beachtend, aber in diesem Fall, den ich voll und ganz zustimmen.

Nach-Metriken verstößt die Form diese bewährten Methoden:

  1. Zu viel Klasse Kupplung
  2. Zu viele Zeilen Code
  3. Gesamt niedrig Wartbarkeit

Mögliche Lösungen für den Menustrip aus dem Rest der Form zu isolieren:

  1. Stuff es in einem Usercontrol
  2. Andere Ideen?
War es hilfreich?

Lösung

Ich glaube, Sie kümmern sich um Isolat Geschäftslogik von der Präsentationslogik übernehmen sollte, zum Beispiel nicht zu viel Code nicht platzieren in Klick-Handler oder implementieren Befehle für Menüpunkte.

Get sicher, dass Ihre Code-Metriken nicht berührt generierten Code oder nicht achten Sie auf schlechte Messwerte in automatisch generierte Code.

Andere Tipps

Können Sie deaktivieren oder filtern Sie Ihre CodeMetrics von erregenden * .Designer.cs zum Beispiel?

Wenn nicht, würde ich eine Factory-Klasse verwenden, so dass Sie diese Strukturen in einer Zeile erstellen können. Die Kehrseite dazu ist, dass es die Funktionalität des Designers reduziert. In der Fabrik können Sie jede Komponente auf einer Vorlage string + „_FileMenu“, beispielsweise auf Basis nennen, so dass Sie die Basis „Namen“ in der Fabrik Konstruktor gesetzt könnten.

Um Code spucken in Ihrem Form.cs Datei, sollten Sie eher ein MVC-Ansatz zu reduzieren, so dass, wenn der Designer erzeugt, ein private void button1_Click Methode sagen, Sie abstrakte einige Business-Logik zu anderen Methoden anderer Klassen. Anstatt also alle Ihre Dateien zu bewegen, button1_Click wird InitiateMoveFileMethod( string source, string destination ) nennen, zum Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top