Meilleures pratiques pour les conventions de nommage de L'interface graphique C#? [fermé]

Les interfaces graphiques, qu'elles soient écrites en WinForms ou en XAML, semblent avoir les conventions de nommage les plus différentes entre les projets que je vois. Pour un simple TextBox pour le nom d'une personne, j'ai vu diverses conventions de nommage:

TextBox tbName      // Hungarian notation
TextBox txtName     // Alternative Hungarian
TextBox NameTextBox // Not even camelCase
TextBox nameTextBox // Field after field with TextBox on the end
TextBox TextBoxName // Suggested in an answer...
TextBox textBoxName // Suggested in an answer...
TextBox uxName      // Suggested in an answer...
TextBox name        // Deceptive since you need name.Text to get the real value
TextBox textBox1    // Default name, as bad as you can get

Je respecte les règles de StyleCop pour tous mes .CS fichiers normalement, et voir les autres le font aussi bien, mais L'interface graphique a tendance à enfreindre ces règles ou varier énormément. Je n'ai pas vu de directives Microsoft qui se réfèrent spécifiquement aux éléments de L'interface graphique au lieu de variables normales, ou même exemples qui s'appliqueraient en dehors d'une application console.

Quelles sont les meilleures pratiques pour nommer les éléments dans une interface graphique?

62
demandé sur ErikE 2009-08-07 23:26:24

17 réponses

J'utilise la vieille école hongroise... txt pour TextBox, btn pour Button, suivi d'un mot généralisé, puis d'un mot plus spécifique. c'est à dire:

BtnUserEmail

Ont eu beaucoup de gens disent des choses comme " omg c'est si vieux, appel VB6!" mais dans une application WinForms riche en interface utilisateur, je peux trouver et modifier les choses plus rapidement parce que généralement la première chose que vous savez sur un contrôle est son type, puis sa catégorie, puis devenir spécifique. Alors que la nouvelle convention de nommage de style les gars sont bloqués essayer de se rappeler ce qu'ils ont nommé cette zone de texte.

69
répondu Neil N 2009-11-09 15:39:01

J'utilise:

TextBox nameTextBox;

Tout comme je voudrais utiliser:

MailAddress homeAddress;

La raison en est que dans ces cas, "TextBox" et "Address" sont descriptifs de ce que l'objet représente, pas de la façon dont il est stocké ou utilisé. Mais dans un autre cas, comme stocker le nom complet d'une personne, j'utiliserais:

string fullName;

Pas:

string fullNameString;

Parce que "String" n'est pas descriptif de ce que l'objet représente, mais seulement comment il est stocké.

26
répondu Lee 2009-08-07 19:50:59

Même convention que tout le reste dans. NET: camel case nom descriptif uniquement, éventuellement suivi d'un suffixe si vous avez besoin de distinguer différentes classes pour la même "chose"logique. Par exemple:

string name; // a name
TextBox nameText; // the control used to edit the name
Label nameLabel; // the control used to label the edit control
List<string> nameList; // a list of names

Et ainsi de suite à l'infini. Peu importe ce que sont les suffixes tant qu'ils sont cohérents et descriptifs.

11
répondu Christian Hayter 2009-08-07 20:02:34

Ce n'est pas mon invention, mais je l'aime:

TextBox uxName = new TextBox();
Label uxNameLabel = new Label();
Button uxAccept = new Button();

Je préfère cela à la notation hongroise puisque tous mes contrôles D'interface utilisateur apparaissent dans un bloc dans intelisense. UX pour "expérience utilisateur". C'est aussi bien si vous changez un contrôle d'une zone de texte à une liste déroulante ou quelque chose, car le nom ne changera pas.

8
répondu Brandon 2009-08-07 20:23:13

La chose la plus importante à propos des conventions de nommage est de choisir quelque chose qui a du sens, d'obtenir un consensus de toutes les parties, et de s'y tenir comme si votre vie en dépendait.

Quant à la convention à utiliser, je voterais pour celle-ci:

TextBox name

Il est court et a une valeur sémantique comme identifiant. En ce qui concerne le type de l'identifiant, Je m'appuierais sur Visual Studio pour vous le dire car il a tendance à être bon dans ce genre de chose.

3
répondu Andrew Hare 2009-08-07 19:29:04

J'aimerais que quelqu'un devienne l'autorité sur ce sujet et le dise comme il est, et commence à l'appliquer... La pire chose pour moi est quand les gens le mélangent dans la même application ou pire encore la même classe.

J'ai vu des trucs assez horribles avec txtName, NameTextBox, name et textBox1 tous utilisés sur le même formulaire... beurk.

Où je travaille, nous avons un document de normes qui nous dit comment le faire, où le faire, et je pense que seulement 20% des personnes de même soin d'essayer et conformer.

Je vais généralement changer quelque chose si Fxcop me crie dessus.

Http://en.wikipedia.org/wiki/Naming_conventions_%28programming%29

Styles De Capitalisation

Notez que: Microsoft. NET recommande UpperCamelCase (alias "Pascal Style") pour la plupart des identifiants. (lowerCamelCase est recommandé pour les paramètres).

3
répondu zimmer62 2009-08-28 20:52:36

J'utilise la notation de Hungation avec une petite différence.

Je travaille maintenant sur un projet qui a une INTERFACE utilisateur riche. Donc, trouver, avec Intellisense, un bouton appelé, disons, btnGetUsers c'est très facile.

Les choses deviennent compliquées lorsque l'application est capable d'obtenir des utilisateurs de différents endroits. Ce sont des contrôles différents. J'ai donc commencé à nommer mes contrôles après l'endroit où ils se trouvent et à utiliser toujours la notation hongroise.

Par exemple: tabSchedAddSchedTxbAdress signifie que txbAddress est une zone de texte dans laquelle une adresse peut être insérée et se trouve dans L'onglet Ajouter une planification du contrôle de L'onglet Planification. De cette façon, je peux trouver des contrôles très faciles et, quand je tape simplement "btn", Je ne reçois pas, à la fois, beaucoup de boutons de toute l'interface utilisateur.

Bien sûr, c'est juste pour m'aider. Je ne suis pas au courant d'une telle meilleure pratique. Toutefois, il aide beaucoup.

Mosu "

3
répondu mosu 2009-11-10 17:26:10

Je nomme tous mes éléments D'interface utilisateur TypeDescriptor. Suivant votre exemple, TextBoxName.

2
répondu Matt Grande 2009-08-07 19:31:22

J'ai travaillé avec une équipe récemment qui se déplace de MFC (6.0 ...). Là, ils auraient quelque chose comme

CString Name;
CEdit ctlName;

Le moyen le plus simple de migrer a été d'utiliser quelque chose comme

TextBox ctlName

C'est juste assez d'un rappel que la variable est le contrôle et non la valeur du contrôle.

Je pense que l'inclusion du type dans le nom est juste ancienne.

-- Modifier -- Un autre avantage est que tous les contrôles sont regroupés lors de la navigation. Si l' le type réel a été utilisé, les contrôles ComboBox seraient assez loin des contrôles TextBox.

2
répondu Brad Bruce 2009-08-07 19:39:41

J'ai tendance à utiliser c_typeName (veuillez noter que le type et le nom sont différents), par exemple c_tbUserEmail pour une zone de texte dans laquelle l'utilisateur doit taper son e-mail. Je trouve cela utile car quand il y a beaucoup de contrôles, il peut être difficile de les trouver dans la liste intellisense longue de miles, donc en ajoutant le préfixe c_, je peux facilement voir tous les contrôles sous cette forme.

2
répondu ShdNx 2009-08-07 20:30:58

Cette folie hongroise/VB6-naming doit s'arrêter.

Si Microsoft voulait vraiment que vous nommiez vos contrôles en fonction de leur type, pourquoi Visual Studio ne pointe-t-il pas automatiquement sur le ' TXT 'ou' btn ' lorsque vous ajoutez le contrôle à votre formulaire web / win?

2
répondu Craig 2009-09-26 18:51:27

J'utilise la notation hongroise, ce qui facilite la recherche de controlls dans les grandes pages.

1
répondu Cleiton 2009-08-07 19:33:48

Pour les éléments que je ne prévois pas d'utiliser dans mon code, je laisse juste le concepteur le gérer pour moi; s'ils deviennent quelque chose utilisé dans mon code, ils sont changés en quelque chose de significatif et cela se trouve être descriptionType (nameTextBox). C'est ainsi que le concepteur les crée si on leur donne suffisamment d'informations (consultez les éléments de menu - "Exit" devient exitMenuItem).

1
répondu Austin Salonen 2009-08-07 19:42:04

Ma propre pratique est: Type _contextDescriptionType. Par exemple:

TextBox _searchValueTextBox

Quoi qu'il en soit, la convention de nommage est trop personnelle ou imposée par des règles générales. Dans tous les cas, il devrait être documenté quelque part afin que tous les développeurs de projets puissent y accéder facilement.

1
répondu terR0Q 2009-08-07 20:04:00

Vous avez les directives pour les noms de Microsoft. Je ne suis pas tout, mais c'est un bon point de départ

1
répondu Gabriel Mongeon 2009-12-22 18:14:23

Je crois que la convention de nommage existe pour faciliter l'effort de codage du développeur et aide à la gérabilité. Pour mon comprendre tout nom qui est utile dans un accès facile devrait être suivi.

J'ai vu un nombre de commentaires avec une approche différente, mais le meilleur que j'ai trouvé dans mes projets est de préfixer le 1er nom du contrôle. Il y a beaucoup de raisons derrière cette approche.

  1. Intellisense rassemblerait tous les mêmes types.
  2. les fenêtres de propriétés de formulaire montreraient également toutes les mêmes contrôle trié
  3. sur les formulaires complexes, vous pouvez facilement identifier que vous avez affaire à label ou textbox (par exemple. lblAccounts et txtAccounts)
  4. Un nouvel utilisateur peut facilement gérer le codage.
  5. Imaginez que j'ai des contrôles accountLst, accountlbl, accounttxt, accountgrd, accountChk sur le même formulaire.

Pendant le codage, un développeur sait toujours qu'il accède à la zone de texte ou à l'étiquette. Où comme il n'est pas clair avec quel nom l'autre développeur a utilisé. Donc, en écrivant simplement" lbl " intellisens apporterait toute la liste d'étiquettes à choisir, où est si vous avez utilisé l'approche utilisée dans #5 alors intellisense apporterait tous les contrôles en utilisant acc. J'ai rarement vu faire une boucle avec le nom de contrôle commencer par" compte " ou plus. Cela signifie qu'il ne serait pas utile dans un incident rare.

Mon pari est de faire des choses qui aident à comprendre le code facilement pour les autres développeurs. Parce que vous grandissez dans votre transporteur, vous ne feriez pas toujours le codage, une autre personne viendrait et prendre votre place.

Le choix est à vous, de quelle façon vous voulez!

1
répondu Rohit.Net 2012-11-05 01:08:53

S'il y a une bonne séparation des préoccupations dans une conception d'application, je suppose qu'il n'y aura pas besoin de nommer les boutons comme LoginButton, LoginBtn ou btnLogin. Si le propriétaire de l'objet est un élément de l'INTERFACE utilisateur ainsi appelons-la Connexion et si le propriétaire n'est pas un élément de l'INTERFACE utilisateur, puis l'objet est dans un mauvais endroit.

0
répondu Dr Jack 2013-07-23 16:54:48