Question

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

Qu'est-ce qu'un bon moyen d'isoler le code pour un MenuStrip (ou tout groupe de contrôle complexe), et il est des éléments de menu enfant, du reste de ma forme?

Par exemple, quand j'ai un MenuStrip avec un certain nombre de menus et chaque menu a un certain nombre d'éléments de menu, qui ont tous les événements de clic, une tonne de code est vomie à la fois le fichier Form.Desinger.cs et aussi la fichier Form.cs. Cela ne cause pas de problèmes sur le plan technique, mais juste se sent mal d'avoir tellement de choses tous jetés dans un seul endroit (avec tout le reste sous la forme).

L'exécution du code Metrics sur mon ensemble du projet, le formulaire est signalé comme ayant le plus mauvais indice de maintenabilité d'un fichier de projet. Normalement, je ne serais pas trop dogmatique la direction de prendre garde l'outil code métrique, mais dans ce cas je suis totalement d'accord.

Selon le Code Metrics, la forme viole ces meilleures pratiques:

  1. Trop de couplage classe
  2. Trop de lignes de code
  3. faible maintenabilité Dans l'ensemble

Les solutions possibles pour isoler le MenuStrip du reste de la forme:

  1. Stuff dans un UserControl
  2. D'autres idées?
Était-ce utile?

La solution

Je pense que vous devriez prendre soin de isoler la logique métier de la logique de présentation, par exemple ne place pas trop de code dans les gestionnaires de clic ou de mettre en œuvre des commandes pour les éléments de menu.

Obtenir que vos paramètres de code ne code généré touchent pas ou ne font pas attention à de mauvaises mesures dans le code généré automatiquement.

Autres conseils

Pouvez-vous désactiver ou filtrer vos CodeMetrics de saisir * .Designer.cs, par exemple?

Dans le cas contraire, j'utiliser une classe d'usine afin que vous puissiez créer ces structures dans une seule ligne. Le côté à ceci, est qu'il réduit la fonctionnalité du concepteur. Dans l'usine, vous pouvez nommer chaque composant à base d'une chaîne de modèle + « _FileMenu », par exemple, de sorte que vous pouvez définir dans le constructeur usine la base « nom ».

Pour réduire le code crachent dans votre fichier Form.cs, pensez à plus d'une approche MVC, de sorte que lorsque le concepteur génère, par exemple une méthode de private void button1_Click, vous abstrait une logique métier à d'autres méthodes d'autres classes. Ainsi, au lieu de déplacer tous vos fichiers, button1_Click appellera InitiateMoveFileMethod( string source, string destination ), par exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top