Code propre en C++ : comment écrire pour n'avoir pas honte dans un an

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi le code propre en C++ n'est pas une question de pédantisme, mais de respect



Si vous avez déjà ouvert un projet écrit « à la va-vite » il y a un an, et que vous n'arriviez pas à comprendre ce que fait une fonction nommée doStuff() — vous savez de quoi je parle. Le code propre en C++ n'est pas qu'une question d'esthétique. C'est une économie de temps, de nerfs et d'argent. C++ est un langage puissant, mais aussi perfide : la mémoire est gérée manuellement, les templates peuvent engendrer des monstres, et la surcharge d'opérateurs peut être une vraie magie. Sans discipline, le code se transforme rapidement en « spaghetti ».



Dans cet article, nous allons voir comment écrire du code propre en C++ pour qu'il soit facile à lire, à maintenir et à étendre. Pas de blabla — seulement de la pratique, des exemples et des principes éprouvés.



Règle n°1 : Le nommage, c'est 50% de la réussite



Les noms des variables, fonctions et classes doivent répondre à la question « qu'est-ce que c'est ? » ou « qu'est-ce que ça fait ? ». Oubliez int x et void f(). Utilisez des noms explicites.



Mauvais exemple

int d; // qu'est-ce que d ? distance ? date ? imbécile ?void p() { // imprime ? analyse ? pleure ?    // ...}


Bon exemple

int distanceEnMetres;void afficherProfilUtilisateur() {    // ...}


Conseil : Adoptez un seul style. Pour le C++, la norme est le camelCase pour les variables et fonctions, et le PascalCase pour les classes. Ne mélangez pas snake_case et camelCase dans un même projet — cela réduit la lisibilité.



Règle n°2 : Les fonctions doivent être petites et faire une seule chose



Le principe de responsabilité unique (Single Responsibility) ne s'applique pas qu'aux classes, mais aussi aux fonctions. Une fonction idéale fait 5 à 20 lignes. Si une fonction fait plus d'une action — divisez-la.



Mauvais

void traiterDonnees(vector<int>& donnees) {    // tri    sort(donnees.begin(), donnees.end());    // filtrage    vector<int> filtre;    for (int x : donnees) if (x > 0) filtre.push_back(x);    // affichage    for (int x : filtre) cout << x << " ";}


Bon

vector<int> filtrerPositifs(const vector<int>& donnees) {    vector<int> resultat;    for (int x : donnees) if (x > 0) resultat.push_back(x);    return resultat;}

void afficherDonnees(const vector<int>& donnees) { for (int x : donnees) cout << x << " ";}

void traiterDonnees(vector<int>& donnees) { sort(donnees.begin(), donnees.end()); auto filtre = filtrerPositifs(donnees); afficherDonnees(filtre);}


Maintenant, chaque fonction peut être réutilisée et testée séparément. Le code propre en C++, c'est la modularité.



Règle n°3 : Évitez les nombres et chaînes magiques



Les nombres et chaînes dont la valeur n'est pas claire dans le contexte sont un fléau. Mettez-les dans des constantes.



Mauvais

if (temperature > 100) {    cout << "Dangereux !";}


Bon

constexpr int TEMPERATURE_MAX_SECURITE = 100;

if (temperature > TEMPERATURE_MAX_SECURITE) { cout << "Dangereux !";}


Maintenant, si le seuil change, vous le modifiez à un seul endroit. Au lieu de chercher tous les 100 dans le code.



Règle n°4 : Les commentaires ne sont pas une excuse pour un mauvais code



Le meilleur commentaire est celui qui n'est pas nécessaire, parce que le code parle de lui-même. N'écrivez pas « ce que fait le code » — c'est visible. Écrivez « pourquoi il le fait ».



Mauvais commentaire

// on incrémente i de 1i++;


Bon commentaire

// On utilise le pré-incrément pour les types POD — plus rapide++i;


Utilisez // TODO: pour les parties incomplètes, mais n'en abusez pas. Le code idéal n'a pas besoin d'explications.



Règle n°5 : Utilisez RAII et les pointeurs intelligents



C++ est réputé pour la gestion manuelle de la mémoire, mais en C++ moderne (C++11 et plus), il existe des outils puissants

Blogs

Book Recommendations