Normes de programmation C#

Tout programmeur se doit d'adopter des normes de programmation... et de les respecter !

Je vous présente ici celles que j'utilise dans tous mes programmes C#, que ce soit avec ASP.NET Web Forms, ASP.NET MVC ou encore pour des applications de bureau. Elles ont été largement inspirées de normes utilisées dans l'industries, dont certaines sont disponibles dans les liens au bas de cet article.

▼Publicité

Pas de notation hongroise

Les normes que j'utilise dictent qu'il ne faut pas utiliser des noms débutant par une lettre d'indentification (ex : un bouton dont le libellé est « Terminer » doit s'appeler « terminer » ou « buttonTerminer » et non « bTerminer »).

Si plusieurs variables portent un nom semblable, on ajoutera au début ou à la fin de leur nom un mot supplémentaire qui rendra le nom unique. Dans le cas de composants, une technique intéressante consiste à conserver le nom donné par défaut par Visual Studio mais remplacer le chiffre terminal par un ou plusieurs mots significatifs. On pourrait donc renommer « label1 » et « textBox1 » en « labelAdresse » et « textBoxAdresse ».

Pas de traits d'union

Dans certains cas, les traits d'union peuvent empêcher la compilation du programme. Pour ne pas obtenir du code qui utilise parfois le trait d'union et parfois pas, on choisit de l'éviter tout simplement.

« Barre en bas » ( _ )

Il est permis d'utiliser la barre en bas seulement pour nommer un projet ou une solution.

Ex : GagnonAnnie_Tortue

Pas de caractères accentués ni d'espaces

On ne le dira jamais assez, tous les noms utilisés dans un programme doivent être exempts de caractères accentués et d'espaces. Les caractères non alphanumériques sont également à éviter (&, *, ?, %, etc.). Cette fois, il ne s'agit pas d'une norme adoptée mais bien une règle essentielle pour permettre la compilation et l'exécution des programmes.

Pas d'abréviations

Afin d'éviter la confusion, il est préférable d'éviter d'utiliser des abréviations. Il est plus important de choisir un nom clair et significatif qu'un nom court. De toute façon, la complétion de code dans Visual Studio nous facilite la tâche pendant qu'on tape notre programme.

Ex : L'abréviation info signifie-t-elle informatique ou information ?
       L'abréviation desc signifie-t-elle description ou descendant ?
       L'abréviation circ signifie-t-elle circonférence ou circuit ?

Quel nom et quelle casse utiliser ?

Les principaux cas de nomenclature sont résumés dans ce tableau.

Élément Casse Autres standards Exemple
Projet ou classe  Casse Pascal À l'exception des bibliothèques de classes, toujours débuter par NomPrenom suivi d'une barre en bas.

GagnonAnnie_AvancerRobot

MesClasses

GagnonAnnie_Tortue

Méthode Casse Pascal 

Puisqu'une méthode est une action, son nom doit comprendre un verbe à l'infinitif.

Lorsqu'une méthode permet simplement de retrouver ou de calculer une valeur, on pourra débuter son nom par Get (signifie obtenir). 

Lorsqu'une méthode permet de vérifier un état (retourne une valeur booléenne), on pourra débuter son nom par Is ou encore par Est. 

Le seul cas où une méthode ne comportera pas de verbe est lorsqu'une méthode sert à effectuer une conversion. À ce moment, on utilisera To (signifie vers) dans son nom.

Dessiner()

TournerGauche()

GetCirconference()

IsValide()

EstValide()

ToString()

CodeToDescription()

Gestionnaire d'événement Tel que nommé par Visual Studio

Les gestionnaires d'événements sont des méthodes qui sont exécutées automatiquement en réponse à un événement, comme un clic sur un bouton, par exemple.

Puisque Visual Studio crée automatiquement le squelette des gestionnaires d'événements, laisser les noms tels quels, même s'ils ne correspondent pas aux standards utilisés pour nommer les autres méthodes.

terminer_Click()

rouge_CheckedChanged()

Page_Load()

Champ et variable locale Casse chameau

En général, utiliser un nom. On pourra donc dire le ou la (ex : la couleurYeux).

Dans le cas d'une variable booléenne, utiliser un adjectif. On pourra donc dire est (ex : est valide).

Il est également permis d'utiliser un verbe pour une variable booléenne. On pourra donc dire doit ou peut (ex : doit continuer ou peut continuer).

Éviter l'utilisation d'une seule lettre, à l'exception du i qui est généralement utilisé dans les itérations.

Suggestion : il est parfois judicieux d'utiliser carrément le type de la variable comme nom. Ce sera le cas, par exemple, d'un objet de type InitialisationRobot qui s'appellerait initialisationRobot.

coordonneeX

rayon

couleurYeux

valide

continuer

i

initialisationRobot

Propriété Casse Pascal La propriété portera le même nom que le champ auquel elle donne accès. Seule la casse de la première lettre distinguera le champ de la propriété.

CoordonneeX

Rayon

CouleurYeux

Paramètre Casse chameau Lorsque le paramètre sert à initialiser un champ, il doit porter le même nom que ce champ.

coordonneeX

rayon

couleurYeux

Constante Casse Pascal Mêmes règles que pour nommer une variable locale ou un champ, à l'exception de la casse.

Max

TourRoue

Fenêtre (Form) Casse Pascal

La classe représentant la fenêtre principale d'une application doit toujours être renommée. La raison est simple : la majorité des applications auront plusieurs fenêtres qui devront être instanciées dans le code alors autant s'habituer à les renommer dès le démarrage du projet. On n'aura donc jamais de Form1, Form2, etc.

Lorsque l'application ne comporte qu'une fenêtre, on donnera généralement à la fenêtre le même nom que le projet, sans la partie NomPrenom_.

Tortue

Bonhommes

InitialisationRobot

Composant (bouton, boîte de texte, libellé,etc.) Casse chameau Utiliser les mêmes règles que pour nommer une variable locale ou un champ.

Suggestion : il est possible de conserver le nom donné par défaut par Visual Studio et de remplacer le chiffre terminal par un ou plusieurs mots significatifs, mais ceci n'est pas obligatoire. Ex : button1 deviendrait buttonTerminer.

terminer

buttonTerminer

nom

nomLibelle

labelNom

nomSaisi

textBoxNom

Bouton Casse chameau

Le nom du bouton sera formé du libellé qui est affiché dessus, sans espaces ni accents. On pourra supprimer les prépositions (ex : à) et les déterminants (ex : le, la, les).

Lorsque le texte reflète une action, utiliser le verbe à l'infinitif.

terminer

tournerGauche

buttonTerminer

Libellé (Label) Casse chameau

On ne renommera le libellé que si on a besoin de l'utiliser dans le code C#. Dans la majorité des cas, on pourra laisser le nom donné par défaut (ex : label1).

L'important, c'est qu'on ne voit jamais le nom par défaut dans le code (ex : label1.Hide();).

message

circonferenceTete

labelMessage

Pour plus d'information

« Instructions de conception pour le développement de bibliothèques de classes ». MSDN. http://msdn.microsoft.com/fr-fr/library/ms229042%28v=VS.90%29.aspx

« Instructions relatives aux noms ». MSDN. http://msdn.microsoft.com/fr-fr/library/ms229002%28v=VS.90%29.aspx

ABRAMS, Brad. « Internal Coding Guidelines ». MSDN. http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx

« C# Coding Style Guide ». C Sharp Friends. http://www.csharpfriends.com/articles/getarticle.aspx?articleid=336#4

« Règles de codage ». Wikipedia. http://fr.wikipedia.org/wiki/R%C3%A8gles_de_codage

« Naming Conventions for .NET / C# Projects ». Akadia.http://www.akadia.com/services/naming_conventions.html

CWALINA, Krzysztof et ABRAMS, Brad (2008). « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries ». Addison-Wesley Professional, Microsoft .NET development series. Aperçu partiel en ligne : http://my.safaribooksonline.com/book/programming/microsoft-dotnet/9780321545671

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories