Skip to content

Conventions de nommage pour le développement

Christophe Chevalier edited this page Sep 3, 2016 · 3 revisions

NORME DE CODAGE POUR CLIENT LOURD


Objectif

Ce document a pour but de décrire les principes de codages utilisés dans ce projet.

Domaine d'application

Ce document est valable pour le langage C#.

Langue de programmation

Excepté pour la BDD où le nom des tables et champs sont en français, le code et les commentaires de tous les projets sont écris en anglais ! Les noms des variables, des fonctions, etc., sont tous définis en anglais !

Et pour les commits alors ?

Il sera préférable également d'écrire les commits en anglais.

Conventions de nommage des différentes entités du code

Classes

Les classes commencent toujours par une majuscule. Chaque nouveau mot commence également par une majuscule. Le reste des lettres qui composent chaque mot est écrit en minuscules.

public class MyClass : MySuperClass 
{

}

Méthodes

Le nom des méthodes commence toujours par une majuscule. Chaque mot qui suit est composé d’une majuscule. Toutes les autres lettres qui composent les mots sont des minuscules. Seules les fonctions correspondant à des événements (clics sur un bouton, chargement d'un formulaire) peuvent commencer par une minuscule.

private void TestAndWrite(CommonCard card)
{…}
private void btnBackToProject_Click(object sender, EventArgs e)
{…}

Constantes

Les variables déclarées en tant que constantes sont écrites en majuscule, avec éventuellement des soulignés entre chaque mot.

public static final int MY_CONST = 13;

Paramètres reçus des fonctions

Les paramètres reçus d’une fonction ne sont pas distingués particulièrement. public void MyFunc(int param1, int param2) {…}

Variables membres d’une classe

Les variables membres d’une classe ne sont toujours préfixés d’un « _ ».

public class MyClass : AnotherClass 
{
  int _myVar = 0;
}

Format des champs, privé et public

Les attributs privés débutent toujours par une minuscule (« camelCase »).

public void MyFunc() 
{
  int myVar = 0; // private variable
  MyClass myClass = MyClass(); // instanciation of a private object
  MySingletonClass mySingleton = MySingleton.GetInstance(); // access to a private singleton object
}

Les attributs publics (« propriétés » de classe) commencent toujours par une majuscule (il est à noter que l’accesseur get/set automatise ce procédé).

public class MyClass : AnotherClass 
{
  int _myVar = 0; // private variable
  public int MyVar {get{…}set{…}};
  public MySdClass mySdClass = mySdClass (); // instanciation of a public object
}

Ressources

Les préfixes suivants doivent être ajoutés aux noms des ressources :

Préfixes / Contrôle visuel

  • Btn / Bouton
  • Tbx / TextBox
  • Lbl / Label
  • Bmp / Image (bitmap)
  • Sc / Scrollbar
  • Rb / Bouton radio
  • Ckbx / Checkbox
  • Form / Formulaire
  • Cbx / Combobox
  • Gbx / Groupbox
  • Pnl / Panel ...

Indentation

L’indentation est un principe fondamental de la programmation et n’est pas uniquement imposée par cette convention. Son caractère obligatoire ne fait ici aucun doute.

if(toto == 2) 
{

}

La première instruction du bloc est décalée et l’indentation générale est deux (ou quatre) espaces.

if(toto == 2) 
{
  déclaration;
  instruction;
  instruction;

  if(titi == 1) 
  {
    instruction;
  }
}

Squelettes des fichiers « .cs »

Les fichiers contenant les classes C# (« .cs ») suivent la nomenclature suivante :

/=====================================================================

  • Class:
  • Version/date: <x.y.z>2 <yyyy.mm.dd>
  • Description: <”This class…”>
  • Specificities: <e.g. “This class is a singleton”>
  • Authors: <LAST_NAME>
  • Copyright: HES-SO/HE-Arc, all rights reserved

=====================================================================/

Les constructeurs apparaîtront en premier dans le fichier, suivis des destructeurs, des fonctions d’initialisation et enfin des autres fonctions.

Commentaires

Toutes les fonctions et propriétés implémentées sont précédées d'un tag XML expliquant ce qu'elle fait.

/// <summary>
/// This ...
/// </summary>
/// <remarks>The...<c>blab bla bla</c></remarks>
private void TestAndWrite(CommonCard card) 
{
...
}