Conventions de nommage en programmation : camelCase, snake_case, PascalCase et plus
Guide complet des conventions de nommage en programmation. Apprenez quand utiliser camelCase, snake_case, PascalCase, kebab-case et CONSTANT_CASE avec les règles propres à JavaScript, Python, Go, Java, CSS et plus.
Conventions de nommage en programmation : camelCase, snake_case, PascalCase et plus
Les conventions de nommage font partie des premières choses que tout développeur doit apprendre, et aussi des sources d'incohérence les plus fréquentes dans les bases de code. Utiliser le mauvais style de casse ne provoque pas d'erreur de syntaxe, mais cela signale une mauvaise familiarité avec les idiomes d'un langage et rend le code plus difficile à lire pour les développeurs expérimentés.
Ce guide couvre toutes les grandes conventions de nommage, leurs cas d'utilisation et les règles propres à 10 langages de programmation. Utilisez notre convertisseur de casse gratuit pour transformer instantanément du texte entre tous ces formats.
Les principales conventions de nommage
camelCase
Motif : premier mot en minuscules, mots suivants avec une majuscule initiale. Aucun séparateur.
myVariableName
calculateTotalPrice
getUserById
isAuthenticated
Où l'utiliser : variables et fonctions JavaScript/TypeScript, variables et méthodes Java, noms de propriétés JSON, variables et fonctions Swift.
Pourquoi le nom camelCase : les lettres majuscules au milieu du mot ressemblent aux bosses d'un chameau.
PascalCase (UpperCamelCase)
Motif : chaque mot commence par une majuscule, y compris le premier. Aucun séparateur.
MyClassName
UserProfile
HttpRequestHandler
DatabaseConnection
Où l'utiliser : noms de classes dans presque tous les langages, noms de composants React/Vue/Angular, interfaces et types TypeScript, presque tout en C# (méthodes, propriétés, classes).
Différence clé avec camelCase : la première lettre est en majuscule. myFunction (camelCase) contre MyFunction (PascalCase).
snake_case
Motif : tout en minuscules, mots séparés par des underscores.
my_variable_name
calculate_total_price
get_user_by_id
is_authenticated
Où l'utiliser : variables, fonctions et noms de modules Python (PEP 8), variables et méthodes Ruby, variables et fonctions Rust, colonnes et tables de base de données, noms de fichiers dans de nombreux projets.
SCREAMING_SNAKE_CASE (CONSTANT_CASE)
Motif : tout en majuscules, mots séparés par des underscores.
MAX_RETRY_COUNT
DATABASE_URL
API_BASE_URL
DEFAULT_TIMEOUT_MS
Où l'utiliser : constantes dans la plupart des langages, variables d'environnement, macros de préprocesseur C/C++, champs static final en Java.
kebab-case (dash-case)
Motif : tout en minuscules, mots séparés par des traits d'union.
my-component-name
user-profile-card
border-bottom-color
my-awesome-package
Où l'utiliser : noms de classes et propriétés CSS, attributs HTML (data-*), slugs d'URL, noms de paquets npm, noms de fichiers dans de nombreux frameworks, noms de fonctions Lisp/Clojure.
Note : kebab-case ne peut pas être utilisé pour les noms de variables dans la plupart des langages, car le trait d'union est interprété comme un opérateur de soustraction.
dot.case
Motif : tout en minuscules, mots séparés par des points.
com.example.myapp
log.level.debug
spring.datasource.url
Où l'utiliser : noms de paquets Java, clés de configuration (Spring Boot, fichiers .properties), espaces de noms C#, noms de domaine.
Train-Case (HTTP-Header-Case)
Motif : chaque mot commence par une majuscule, mots séparés par des traits d'union.
Content-Type
X-Request-Id
Accept-Language
Cache-Control
Où l'utiliser : en-têtes HTTP, types MIME. C'est la seule convention courante qui met les mots en majuscule tout en utilisant des traits d'union.
Règles propres aux langages
JavaScript / TypeScript
| Élément | Convention | Exemple |
|---|---|---|
| Variables | camelCase | let userName = "John" |
| Fonctions | camelCase | function getUserData() |
| Classes | PascalCase | class UserProfile |
| Interfaces (TS) | PascalCase | interface ApiResponse |
| Alias de type (TS) | PascalCase | type UserId = string |
| Constantes | CONSTANT_CASE | const MAX_RETRIES = 3 |
| Membres d'énumération (TS) | PascalCase | enum Color { Red, Blue } |
| Composants React | PascalCase | function UserCard() |
| Modules CSS | camelCase | styles.headerContainer |
| Noms de fichiers | kebab-case ou camelCase | user-profile.ts |
| Paquets npm | kebab-case | my-awesome-lib |
Python
| Élément | Convention | Exemple |
|---|---|---|
| Variables | snake_case | user_name = "John" |
| Fonctions | snake_case | def get_user_data(): |
| Classes | PascalCase | class UserProfile: |
| Constantes | CONSTANT_CASE | MAX_RETRIES = 3 |
| Modules | snake_case | import user_utils |
| Paquets | minuscules (sans séparateur) | import mypackage |
| Membres privés | _leading_underscore | self._internal_data |
| Name mangling | __double_leading | self.__private_var |
| Méthodes dunder | double_both | def __init__(self): |
Les conventions de nommage Python sont définies dans PEP 8, le guide de style universellement accepté.
Java
| Élément | Convention | Exemple |
|---|---|---|
| Variables | camelCase | String userName |
| Méthodes | camelCase | getUserData() |
| Classes | PascalCase | class UserProfile |
| Interfaces | PascalCase | interface Serializable |
| Constantes | CONSTANT_CASE | static final int MAX_RETRIES |
| Paquets | lowercase.dot.separated | com.example.myapp |
| Valeurs d'énumération | CONSTANT_CASE | enum Status { ACTIVE, INACTIVE } |
Go
| Élément | Convention | Exemple |
|---|---|---|
| Exporté (public) | PascalCase | func GetUser(), type Config struct |
| Non exporté (privé) | camelCase | func parseInput(), var count int |
| Constantes | PascalCase ou camelCase | const MaxRetries = 3 |
| Paquets | minuscules (un seul mot) | package http |
| Interfaces | PascalCase + suffixe -er | type Reader interface |
| Acronymes | ALL CAPS | userID, httpURL, sqlDB |
Go utilise la capitalisation pour la visibilité : les identifiants exportés commencent par une majuscule, les non exportés par une minuscule. C'est imposé par le compilateur, pas seulement par convention.
CSS
| Élément | Convention | Exemple |
|---|---|---|
| Propriétés | kebab-case | background-color: red |
| Noms de classes | kebab-case | .user-profile-card |
| Notation BEM | block__element--modifier | .card__title--active |
| Propriétés personnalisées CSS | kebab-case avec préfixe -- | --primary-color: blue |
| Variables Sass | kebab-case avec $ | $font-size-large |
| Classes Tailwind | kebab-case | text-sm, bg-blue-500 |
Rust
| Élément | Convention | Exemple |
|---|---|---|
| Variables | snake_case | let user_name = "John" |
| Fonctions | snake_case | fn get_user_data() |
| Structs/Enums | PascalCase | struct UserProfile |
| Constantes | SCREAMING_SNAKE_CASE | const MAX_RETRIES: u32 = 3 |
| Modules | snake_case | mod user_utils |
| Traits | PascalCase | trait Serialize |
| Noms de crates | kebab-case (Cargo.toml) / snake_case (code) | my-crate / my_crate |
SQL
| Élément | Convention | Exemple |
|---|---|---|
| Mots-clés | UPPERCASE | SELECT, FROM, WHERE |
| Noms de tables | snake_case (singulier ou pluriel) | user_profile ou user_profiles |
| Noms de colonnes | snake_case | first_name, created_at |
| Index | préfixe ix_ | ix_users_email |
| Clés étrangères | préfixe fk_ | fk_orders_user_id |
Motifs de conversion courants
Lorsque vous travaillez entre langages ou systèmes, vous devez souvent convertir entre conventions de nommage :
| De → Vers | Quand |
|---|---|
| camelCase → kebab-case | Propriété JS → nom de classe CSS |
| camelCase → snake_case | JS/Java → Python/Ruby/Base de données |
| snake_case → camelCase | Base de données/API → JavaScript |
| PascalCase → kebab-case | Nom de composant → nom de fichier |
| kebab-case → camelCase | Propriété CSS → propriété de style JS |
| CONSTANT_CASE → camelCase | Variable d'environnement → objet de configuration |
Exemple : une API JSON peut renvoyer user_name (snake_case), tandis que votre code JavaScript utilise userName (camelCase), votre CSS utilise .user-name (kebab-case) et votre composant React s'appelle UserName (PascalCase). Tous représentent le même concept.
Utilisez notre convertisseur de casse pour convertir instantanément entre tous ces formats sans retaper à la main.
Acronymes et abréviations
Les acronymes dans les identifiants sont traités différemment selon les langages :
| Langage | Règle | Exemple |
|---|---|---|
| JavaScript | Mettre seulement la première lettre en majuscule | userId, htmlParser, apiUrl |
| Go | Garder tout en majuscules | userID, htmlParser, apiURL |
| C# | Acronymes de 2 lettres : tout en majuscules ; 3+ : PascalCase | IOStream, HtmlParser |
| Java | Mettre seulement la première lettre en majuscule | userId, httpUrl |
| Python | Minuscules en snake_case | user_id, html_parser, api_url |
L'incohérence autour des acronymes est l'un des sujets de style les plus débattus. Le plus important est la cohérence au sein de votre projet.
Conventions de noms de fichiers
| Langage/Framework | Convention | Exemple |
|---|---|---|
| JavaScript/TypeScript | kebab-case ou camelCase | user-profile.ts, userProfile.ts |
| Composants React | PascalCase | UserProfile.tsx |
| Python | snake_case | user_profile.py |
| Java | PascalCase (comme la classe) | UserProfile.java |
| Go | minuscules | userprofile.go |
| CSS/SCSS | kebab-case | user-profile.css |
| Tests | Même nom + .test/.spec | user-profile.test.ts |
Références de guides de style
| Langage | Guide de style officiel |
|---|---|
| Python | PEP 8 |
| JavaScript | Airbnb / Google / StandardJS |
| TypeScript | Google TypeScript Style Guide |
| Java | Google Java Style Guide |
| Go | Effective Go (appliqué par gofmt) |
| Rust | Rust API Guidelines |
| C# | .NET Naming Guidelines |
| Swift | Swift API Design Guidelines |
| Ruby | Ruby Style Guide |
| PHP | PSR-12 |
Foire aux questions
La convention de nommage affecte-t-elle l'exécution du code ?
Dans la plupart des langages, non : myVar et my_var sont tous deux valides. L'exception est Go, où la capitalisation détermine la visibilité : MyFunc est exporté (public), myFunc ne l'est pas (privé). En CSS, les noms de classes sont sensibles à la casse, donc .MyClass et .myclass sont deux sélecteurs différents.
Quelle convention de nommage est la "meilleure" ?
Il n'existe pas de convention universellement meilleure. Suivez la convention établie pour votre langage. Utiliser snake_case en JavaScript ou camelCase en Python fonctionnera, mais cela troublera les autres développeurs et ira contre les attentes de la communauté. La cohérence à l'intérieur d'un projet compte plus que le choix précis.
Comment les linters imposent-ils les conventions de nommage ?
ESLint (JavaScript) possède la règle camelcase. Pylint (Python) applique les noms PEP 8. RuboCop (Ruby) vérifie le style de nommage. Le compilateur Go impose les règles d'export par capitalisation. La plupart des linters peuvent être configurés selon les exigences de nommage propres à votre projet.
Besoin de convertir du texte entre conventions de nommage ? Utilisez notre convertisseur de casse pour transformer instantanément entre camelCase, snake_case, PascalCase, kebab-case et plus. Pour compter les caractères et les mots dans votre code, essayez notre compteur de mots.