Initialisation des systèmes...

Baptiste.Dev
Retour aux notes
LangagesDébutantSérie : C# / .NET

C# : Conventions de nommage

PascalCase, camelCase, underscore - comment nommer ses variables, classes, méthodes et fichiers en C#.

4 min de lecture
Mis à jour il y a 4 mois
c#csharpconventionsnommagePascalCasecamelCasebonnes pratiques

C# : Conventions de nommage

En C#, les conventions de nommage ne sont pas juste cosmétiques. Elles sont quasi universelles dans l'écosystème .NET et respectées par tous les projets sérieux. Un développeur C# qui lit ton code s'attend à les voir - les enfreindre, c'est rendre le code plus difficile à lire pour tout le monde.


# Les conventions

PascalCase

Chaque mot commence par une majuscule, pas de séparateur.

MonNomDeVariable
CalculerTotal
VoitureElectrique

Utilisé pour :

  • Les noms de classes, structs, records, enums
  • Les méthodes
  • Les propriétés (publiques et privées)
  • Les interfaces (avec le préfixe I)
  • Les constantes
  • Les événements
  • Les namespaces
class VoitureElectrique                    // classe
{
    public int Autonomie { get; set; }     // propriété
    public const int VitesseMax = 250;     // constante
 
    public void Demarrer() { }             // méthode
    public event Action OnDemarrage;       // événement
}
 
interface IVehicule { }                    // interface
enum TypeCarburant { Essence, Diesel }     // enum

camelCase

Premier mot en minuscule, les suivants en majuscule.

monNomDeVariable
compteurTotal
estActif

Utilisé pour :

  • Les paramètres de méthodes
  • Les variables locales
void Saluer(string nomUtilisateur, int ageMinimum)
{
    bool estValide = ageMinimum >= 18;
    string messageAccueil = $"Bonjour {nomUtilisateur}";
}

_camelCase (underscore prefix)

camelCase avec un _ devant.

_solde
_connexionDb
_estInitialise

Utilisé pour :

  • Les champs privés d'une classe
class CompteBancaire
{
    private decimal _solde;
    private readonly string _titulaire;
    private bool _estActif;
 
    public CompteBancaire(string titulaire, decimal soldeInitial)
    {
        _titulaire = titulaire;
        _solde = soldeInitial;
        _estActif = true;
    }
 
    public decimal GetSolde() => _solde;
}

Le _ évite la confusion avec les paramètres et les variables locales. Sans lui, tu te retrouves à écrire this.solde = solde partout.

UPPER_SNAKE_CASE

Tout en majuscules, séparé par des underscores.

MAX_RETRIES
DATABASE_CONNECTION_STRING

Utilisé pour :

  • Rarement en C#. Certaines équipes l'utilisent pour les constantes, mais la convention officielle Microsoft préfère PascalCase même pour les constantes.
  • On le croise surtout pour les variables d'environnement et les constantes de configuration.
// Convention officielle Microsoft
const int MaxRetries = 3;
 
// Acceptable dans certaines équipes (style C/C++)
const int MAX_RETRIES = 3;

# Récapitulatif

ÉlémentConventionExemple
Classe, struct, recordPascalCaseVoitureElectrique
InterfaceI + PascalCaseIVehicule
EnumPascalCaseTypeCarburant
Valeur d'enumPascalCaseTypeCarburant.Essence
MéthodePascalCaseCalculerTotal()
PropriétéPascalCaseNomComplet
ÉvénementPascalCaseOnClicked
ConstantePascalCaseMaxRetries
NamespacePascalCaseMonProjet.Services
ParamètrecamelCasenomUtilisateur
Variable localecamelCasecompteurTotal
Champ privé_camelCase_solde

# Les erreurs courantes

Nommer un booléen sans préfixe

// MAL - on ne sait pas ce que "actif" signifie
bool actif = true;
 
// BIEN - la question est dans le nom
bool estActif = true;
bool aDesEnfants = false;
bool peutModifier = true;

Les booléens doivent se lire comme une question oui/non. Les préfixes courants : est (is), a (has), peut (can), doit (should).

Abréviations

// MAL
int nb = 5;
string msg = "Hello";
var btn = new Button();
DateTime dt = DateTime.Now;
 
// BIEN
int nombre = 5;
string message = "Hello";
var bouton = new Button();
DateTime dateCreation = DateTime.Now;

Les abréviations rendent le code illisible pour quelqu'un qui ne connaît pas le contexte. Exception : les acronymes courants comme Id, Url, Html, Xml sont acceptés.

Sigles et acronymes

Les acronymes de 2 lettres restent en majuscules. Les acronymes de 3+ lettres suivent PascalCase :

// 2 lettres - tout en majuscules
IOStream
UIElement
DBContext
 
// 3+ lettres - PascalCase
XmlParser     // pas XMLParser
HtmlHelper    // pas HTMLHelper
HttpClient    // pas HTTPClient

Nommer les interfaces sans le I

// MAL
interface Vehicule { }
 
// BIEN
interface IVehicule { }

Le I est obligatoire par convention. Sans lui, on confond interface et classe.


# Conseils pratiques

  • Un nom doit expliquer le "quoi", pas le "comment" - CalculerTotal() plutôt que BouclerEtAdditionner()
  • Les méthodes sont des verbes - Démarrer(), Calculer(), Envoyer()
  • Les propriétés sont des noms - Nom, Âge, EstActif
  • Les classes sont des noms au singulier - Voiture, pas Voitures (sauf les collections)
  • Pas de type dans le nom - string nom pas string strNom, List<int> ages pas List<int> listeAges
  • En anglais ou en français, mais pas les deux - choisis une langue et tiens-toi à elle dans tout le projet

Dans l'industrie, le code est le plus souvent en anglais, mais ça dépend des conventions de l'entreprise. Certaines équipes françaises codent en français. L'important c'est de choisir une langue et de s'y tenir dans tout le projet.


# La suite

Découvre aussi les autres articles de la série :