Domanda

In Form di Windows, C #, .NET 3.5, VS2008 ...

Che cosa è un buon modo per isolare il codice per un MenuStrip (o qualsiasi gruppo di controllo complessi), ed è le voci di menu del bambino, dal resto della mia forma?

Per esempio, quando ho un MenuStrip con una serie di menu e ogni menù ha una serie di voci di menu, che hanno tutti gli eventi click, una tonnellata di codice viene vomitato nel sia il file Form.Desinger.cs e anche la file di Form.cs. Questo non è causa di alcun problema tecnico, ma semplicemente si sente sbagliato avere tanta roba tutto scaricati in un unico luogo (insieme a tutto il resto in forma).

L'esecuzione del Metriche Codice in tutto il mio progetto, il modulo viene contrassegnata come avente il peggior indice di manutenibilità di qualsiasi file di progetto. Normalmente, non sarebbe troppo dogmatico badare alla direzione dello strumento Codice Metrics, ma in questo caso sono totalmente d'accordo.

Secondo Codice Metrics, la forma violi queste buone pratiche:

  1. Troppo classe di accoppiamento
  2. Troppo molte righe di codice
  3. bassa manutenibilità complesso

Le soluzioni possibili per isolare il MenuStrip dal resto della forma:

  1. Roba in un UserControl
  2. Altre idee?
È stato utile?

Soluzione

Credo che si dovrebbe prendere cura di logica di business isolato dalla logica di presentazione, per esempio, non pone troppo codice nei gestori di clic o implementare i comandi per le voci di menu.

Get che le metriche del codice non tocca codice generato o non prestare attenzione alle metriche cattivi in ??codice generata automaticamente.

Altri suggerimenti

Can si disattiva o filtrare i CodeMetrics da afferrare * .Designer.cs, per esempio?

In caso contrario, vorrei usare una classe di fabbrica in modo da poter creare queste strutture in una sola riga. Il lato negativo di questo, è che riduce la funzionalità del Designer. In fabbrica, si potrebbe nome ogni componente sulla base di una stringa di modello + "_FileMenu", per esempio, in modo che è possibile impostare il "nome" di base nel costruttore di fabbrica.

Per ridurre il codice vomitare nel file Form.cs, prendere in considerazione più di un approccio MVC, in modo che quando il progettista genera, diciamo un metodo private void button1_Click, è estratto una logica di business ad altri metodi di altre classi. Così, invece di spostare tutti i file, button1_Click chiamerà InitiateMoveFileMethod( string source, string destination ), per esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top