Conventions de Nommage en Programmation â camelCase, snake_case et Au-delĂ
Vous ouvrez un code source pour la premiĂšre fois et vous voyez getUserName, get_user_name et GetUserName dans le mĂȘme fichier. ImmĂ©diatement, vous savez que quelque chose a mal tournĂ©. Les conventions de nommage sont l'une de ces choses qui semblent triviales jusqu'Ă ce que vous travailliez en Ă©quipe â alors elles deviennent essentielles.
Un nommage cohĂ©rent n'est pas une question de prĂ©fĂ©rence personnelle. Il s'agit de rendre le code lisible pour la prochaine personne qui y touchera, ce qui est souvent vous-mĂȘme dans six mois.
Pourquoi les Conventions de Nommage Comptent
Trois choses se dégradent quand un projet manque de nommage cohérent :
- La lisibilitĂ© souffre â Quand les styles de variables changent toutes les quelques lignes, votre cerveau gaspille des cycles Ă analyser le format au lieu de comprendre la logique
- La collaboration d'Ă©quipe se fracture â Les pull requests deviennent des champs de bataille sur le style plutĂŽt que sur le fond. L'intĂ©gration de nouveaux dĂ©veloppeurs prend plus de temps car il n'y a pas de modĂšle prĂ©visible
- L'outillage cesse de fonctionner correctement â Les linters, l'auto-complĂ©tion, les gĂ©nĂ©rateurs de code et les outils de refactoring reposent sur des modĂšles de nommage prĂ©visibles
La convention que vous choisissez importe bien moins que d'en choisir une et de s'y tenir. Un code source avec du snake_case cohérent partout est infiniment meilleur qu'un qui mélange trois styles différents.
Le Guide Complet des Conventions de Nommage
camelCase
Le premier mot est en minuscules, et chaque mot suivant commence par une majuscule. Pas de séparateurs.
// JavaScript / TypeScript
const userName = "Alice";
let itemCount = 42;
function getUserProfile(userId) {
return fetchData(`/users/${userId}`);
}
OĂč c'est utilisĂ© : JavaScript, TypeScript et Java utilisent camelCase pour les variables, les noms de fonctions et de mĂ©thodes. C'est aussi le standard en Swift pour les variables locales et les paramĂštres de fonctions.
PascalCase
Chaque mot commence par une majuscule. Aussi appelé UpperCamelCase.
// TypeScript / C#
class UserProfile {
firstName: string;
lastName: string;
}
interface DatabaseConnection {
host: string;
port: number;
}
// Composant React
function NavigationBar({ items }: NavProps) {
return <nav>{/* ... */}</nav>;
}
OĂč c'est utilisĂ© : C# utilise PascalCase pour presque tout ce qui est public â classes, mĂ©thodes, propriĂ©tĂ©s. TypeScript et JavaScript l'utilisent pour les classes, interfaces, alias de types et enums. React impose PascalCase pour les noms de composants car JSX doit distinguer les composants des Ă©lĂ©ments HTML.
En Go, PascalCase a une signification spéciale : tout identifiant commençant par une majuscule est exporté (public).
snake_case
Tous les mots en minuscules, séparés par des underscores.
# Python
user_name = "Alice"
item_count = 42
def get_user_profile(user_id):
return fetch_data(f"/users/{user_id}")
class UserProfile:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
OĂč c'est utilisĂ© : Python utilise snake_case pour pratiquement tout sauf les noms de classes. Ruby suit le mĂȘme modĂšle. Rust utilise snake_case pour les variables, fonctions et modules. Les schĂ©mas de bases de donnĂ©es utilisent presque universellement snake_case pour les noms de tables et de colonnes.
SCREAMING_SNAKE_CASE
Tout en majuscules avec des underscores. Réservé aux constantes et valeurs qui ne doivent jamais changer.
// Constantes dans la plupart des langages
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = "https://api.example.com";
const DEFAULT_TIMEOUT_MS = 5000;
OĂč c'est utilisĂ© : Presque tous les langages utilisent SCREAMING_SNAKE_CASE pour les constantes. Le format tout en majuscules est un signal universel qui dit « ne rĂ©assignez pas cette valeur ».
kebab-case
Tout en minuscules avec des tirets comme séparateurs.
/* Noms de classes CSS */
.navigation-bar {
background-color: #1a1a2e;
}
.user-profile-card {
border-radius: 8px;
}
# Flags CLI
npm install --save-dev eslint
git commit --no-verify
OĂč c'est utilisĂ© : CSS et HTML favorisent fortement kebab-case. Les slugs d'URL l'utilisent. Les outils en ligne de commande et les flags le suivent.
kebab-case ne peut pas ĂȘtre utilisĂ© pour les noms de variables dans la plupart des langages de programmation car le tiret est interprĂ©tĂ© comme un opĂ©rateur de soustraction.
dot.case
Mots séparés par des points.
// Noms de paquets Java
package com.example.userservice.controllers;
import org.springframework.boot.SpringApplication;
OĂč c'est utilisĂ© : Nommage de paquets Java, extensions de fichiers, clĂ©s de propriĂ©tĂ©s de configuration dans Spring Boot et frameworks similaires.
Title Case
Chaque mot principal est en majuscule. Les mots mineurs comme « et », « le » et « de » restent en minuscules.
OĂč c'est utilisĂ© : Titres d'interface, titres de pages, Ă©lĂ©ments de menu, sections de documentation et noms propres.
path/case
Mots séparés par des barres obliques, suivant les conventions du systÚme de fichiers ou des espaces de noms.
OĂč c'est utilisĂ© : Chemins du systĂšme de fichiers, chemins de modules, hiĂ©rarchies d'espaces de noms et structures de routage d'URLs.
Tableau des Conventions par Langage
| Langage | Variables / Fonctions | Classes / Types | Constantes | Fichiers |
|---|---|---|---|---|
| JavaScript / TypeScript | camelCase | PascalCase | SCREAMING_SNAKE_CASE | kebab-case ou camelCase |
| Python | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| Go | camelCase (non exporté) | PascalCase (exporté) | PascalCase ou ALL_CAPS | snake_case |
| Rust | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| Java | camelCase | PascalCase | SCREAMING_SNAKE_CASE | PascalCase |
| C# | camelCase (privé) | PascalCase (public) | PascalCase | PascalCase |
| Ruby | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| CSS | kebab-case | â | â | kebab-case |
| SQL | snake_case (colonnes) | â | MAJUSCULES (mots-clĂ©s) | snake_case |
| PHP | camelCase | PascalCase | SCREAMING_SNAKE_CASE | PascalCase |
Erreurs Courantes et Comment les Corriger
1. MĂ©langer les conventions dans le mĂȘme scope
// â IncohĂ©rent
const user_name = "Alice";
const itemCount = 42;
const MaxRetries = 3;
// â
camelCase cohérent
const userName = "Alice";
const itemCount = 42;
const maxRetries = 3;
2. Utiliser la mauvaise convention pour le langage
# â Utiliser camelCase en Python
def getUserProfile(userId):
userName = fetchUser(userId)
return userName
# â
Utiliser snake_case comme Python l'attend
def get_user_profile(user_id):
user_name = fetch_user(user_id)
return user_name
3. Abréviations et acronymes
// â Gestion incohĂ©rente des acronymes
const XMLParser = new XmlParser();
const htmlToJSON = convert(HTMLString);
// â
Traiter les acronymes comme des mots
const xmlParser = new XmlParser();
const htmlToJson = convert(htmlString);
4. Noms booléens sans préfixes is/has/can
// â BoolĂ©en ambigu
const active = true;
// â
Intention claire du booléen
const isActive = true;
Conversion Automatique Entre Conventions
Quand vous travaillez entre langages, la conversion manuelle des conventions de nommage est fastidieuse et sujette aux erreurs.
Notre Convertisseur de Casse de Texte gĂšre cela automatiquement. Collez n'importe quel identifiant et convertissez-le entre camelCase, PascalCase, snake_case, kebab-case et plus en un seul clic.
Lectures Complémentaires
- JSON Formatting Best Practices â Structurez vos donnĂ©es aussi proprement que vous nommez vos variables
- Regex Cheat Sheet â RĂ©fĂ©rence de correspondance de motifs pour la validation et le traitement de texte
- SQL Formatting Best Practices â Ăcrivez des requĂȘtes SQL lisibles
PrĂȘt Ă convertir les conventions de nommage automatiquement ? Essayez notre Convertisseur de Casse de Texte â collez n'importe quel identifiant et transformez-le entre camelCase, snake_case, PascalCase, kebab-case et plus. Sans inscription, sans donnĂ©es envoyĂ©es aux serveurs, entiĂšrement gratuit.