web-dev-qa-db-fra.com

Convention de dénomination des contrôles

Microsoft a des directives de dénomination sur son site Web ( ici ). J'ai aussi le livre Framework Design Guidelines.

Ce que je n'ai pas pu trouver, c'était une ligne directrice sur les noms des contrôles.

Par exemple, un bouton, lorsqu'il est déposé dans un formulaire, obtient le nom de type + le numéro, avec un chameau comme nom par défaut, tel que "bouton1".

Voici ce que je fais: je supprime le numéro et ajoute une description significative après. Par exemple, "buttonDelete" ou "buttonSave".

De cette façon, vous n'avez pas à maintenir une grande liste de contrôles et leurs noms abrégés dans une directive quelque part.

Êtes-vous d'accord?

35
Patrick Peters

Je n'ai pas de convention en tant que telle, mais j'essaie d'être très large avec la partie "type" du nom. par exemple. Le bouton, le bouton de lien et le bouton d'image ont tendance à être nommés "quelque chose de bouton". Les zones de liste déroulante, les listes de boutons radio finissent toutes par "quelque chose de sélecteur". Les TextBoxes et les Calendriers sont "quelque chose d'Input". De cette façon, j'ai une idée approximative de ce type de contrôle sans que le nom soit lié à la mise en œuvre réelle. Si je décide de remplacer un groupe de boutons d'option par une liste déroulante, pas besoin de renommer!

22
Jon M

Avertissement: Ce qui suit s'adresse davantage à WinForm/WPF développement. Patrick Peters a souligné à juste titre qu'il y a des problèmes de bande passante/performances en jeu lors du traitement des contrôles ASP.NET.

Il n'y a pas vraiment de standard ici, et je pense que c'est parce que c'est l'un des plus scénarios de nommage arbitraires. Dans la plupart des cas, les contrôles sont privés pour la classe et ne sont utilisés qu'à la légère dans les gestionnaires d'événements.

Comme d'autres répondeurs, moi aussi tilisé pour passer un temps non négligeable à "fixer" les noms de contrôle. Je faisais des choses comme "btnSave", "tbxName" (tbx pour TextBox), etc. Cependant, en expliquant mon schéma à quelqu'un d'autre, j'ai réalisé à quel point c'était arbitraire. "Cbx" est-il une zone de liste déroulante ou une case à cocher?

Cela m'a amené à réexaminer ce que le concepteur fait automatiquement et à réaliser que je peux nommer les contrôles de manière claire, cohérente et rapide si je laisse le concepteur faire le travail. C'est en fait très similaire à la suggestion de l'affiche de la question:

Je remplace le numéro de contrôle par la sémantique du contrôle. Ainsi, "button1" (le concepteur par défaut) sera "buttonSave" et "listBox3" deviendra "listBoxWidgets". S'il n'y aura qu'un seul contrôle de ce type, je supprime simplement le nombre: "errorProvider1" devient "errorProvider".

Alors, comment est-ce mieux?

  • Méticuleusement "réparer" les noms de variables est une perte de temps si c'est une variable interne
  • Votre schéma de nommage est susceptible d'être ambig s'il raccourcit tout un tas de choses (CheckBox contre ComboBox)
  • Le concepteur donne un bon point de départ cohérent, facile (et rapide) à spécialiser
  • la longueur du nom de variable n'est pas pertinente lorsque vous utilisez Intellisense
  • Les noms de contrôle se regroupent joliment et intuitivement (dans Intellisense) lorsqu'ils sont préfacés par leur type. Lorsque vous avez 15 TextBox sur votre formulaire, vous vous souvenez tout d'abord que vous voulez un TextBox, tapez "textBox", puis choisissez le nom dans la liste.
  • Quiconque ne connaît pas votre "schéma" peut le voir immédiatement et l'adopter plus rapidement qu'autre chose.
  • Il est TRÈS rapide de fournir des noms de contrôle utiles ... très peu de jockey clavier/souris pour ce faire ... donc une productivité élevée avec des résultats intuitifs. Qu'est-ce qu'il ne faut pas aimer?

PS. Cela tend vers une question Bikeshed, mais comme je peux peindre un Bikeshed, je suis allé de l'avant et j'ai rejoint la discussion. ;)

29
el2iot2

Voici quelques exemples courants:

frm  Form
mnu  Form menu
cmd  Command button
chk  Check button
opt  Radio button
lbl  Text label
txt  Text edit box
pb   Picture box
pic  Picture
lst  List box
cbo  Combo box
tmr  Timer

Une liste plus longue se trouve à INFO: Conventions de dénomination des notations hongroises d'objets pour VB.

23
NoahD

Je ne fais pas WinForms depuis un certain temps, mais ce que j'ai fait, c'est deux choses.

  • décochez la case "générer un membre" (ou comme on l'appelle) pour des choses comme les étiquettes, etc. En gros, je ne garde comme champs que les choses dont j'ai besoin.
  • pour ceux dont j'ai besoin, définissez un nom descriptif. Si nécessaire, ajoutez le nom du contrôle (ie saveButton). Si je n'ai pas envie d'ajouter un nom de contrôle ajoute une valeur, je n'ajouterais pas le "bouton" et je laisserais simplement le nom comme "enregistrer".

Fondamentalement, la plupart du temps, je ne créais pas du tout de bouton pour enregistrer. (Si vous avez une logique de sauvegarde, vous ne pouvez toujours avoir que le gestionnaire d'événements OnSaving abonné à l'événement Click du bouton).

https://msdn.Microsoft.com/en-us/library/ms233630 (v = vs.110) .aspx

4
Krzysztof Kozmic

Oui, changez ces noms

Pour moi:

  • Button btnDescription

  • TextBox txtDescription

  • ComboBox cboDescription

etc...

3
user68610

La programmation de l'interface graphique obtient le bâton court quand il s'agit de conventions de toutes sortes. Voir mon réponse à une autre question pour les directives que j'utilise pour nommer.

2
Michael Meadows

Je suis probablement l'une des dernières personnes à utiliser encore la notation hongroise. Je connais cet argument que le IDE peut vous dire le type de variable, mais cela ne m'aide pas lorsque je code dans Notepad ++ ou que je regarde une impression ... de toute façon, j'utilise les "btnSave", "cbOptions", "txtFirstName", "lblTitle", "ddlCardType", etc ... j'aime juste pouvoir jeter un coup d'œil au code et savoir ce que je regarde sans chercher une déclaration ou survoler une variable pour obtenir son type de données depuis l'IDE.

1
mlindegarde

Oui, vous avez besoin d'identifiants significatifs pour toute variable - contrôle ou non - les noms par défaut sont uniquement parce que votre IDE ne sait rien de votre domaine problématique et ne peut donc pas toujours `` deviner '' un meilleur nom).

1
Mark Pim

Oui, je suis totalement d'accord (mais je le renomme en ButtonDelete), donc les noms en minuscules sont pour les variables dans mon cas :)

Personnellement, je pense que tant que vous êtes cohérent, vous ne rencontrerez pas de problèmes même si quelqu'un d'autre lit votre code.

0
Gambrinus

Je ne suis pas sûr, mais je pense que le nommage des contrôles dans Windows Forms est l'un des seuls endroits où je peux voir une utilisation pour notation hongroise . Je pense donc que vous êtes bon.

0
Jason Punyon

Je pense que la pensée actuelle désapprouve l'inclusion du type de contrôle dans le nom. Je serais enclin à les traiter comme un autre objet que j'utilise et à suivre la même convention de dénomination.

Utilisez certainement une dénomination significative, cela va sans dire :) Cependant, à la fin de la journée, si votre convention de dénomination a toujours un sens pour vous lorsque vous revisitez votre code des mois plus tard, je m'en tiendrai probablement à cela.

0
Lazarus