Contenu du cours
Pointeurs Intelligents C++
Pointeurs Intelligents C++
Meilleures Pratiques de Références
Conventions de nommage
Choisissez des noms significatifs pour vos références. Les noms doivent refléter le but de la variable référencée. Des noms clairs et descriptifs améliorent la lisibilité du code et facilitent la compréhension de votre code par d'autres personnes (ou par vous-même dans le futur).
main
int main() { int counter = 42; // Poor naming choice int& r = counter; // Improved naming for better clarity int& counterRef = counter; // Now it's clear that counterRef is a reference to the counter // ... rest of the code }
Dans le code ci-dessus, counterRef
est un nom significatif pour une référence, tandis que r
est un choix de nom médiocre qu'il convient d'éviter.
Portée et durée de vie
Soyez attentif à la portée et à la durée de vie de vos références. En règle générale, ne retournez pas de références à des variables locales depuis des fonctions, car cela conduit à un comportement indéfini une fois que la variable sort de la portée.
main
const int& createReference() { int localVar = 10; // This is dangerous - localVar goes out of scope return localVar; } int main() { const int& result = createReference(); // Undefined behavior }
Dans le code ci-dessus, nous retournons une référence à localVar
, une variable locale, depuis la fonction createReference
. Cela entraînera un comportement indéfini une fois que localVar
sortira de la portée.
Références dans les boucles for basées sur la plage
Utilisez des références dans les boucles for basées sur la plage pour travailler directement avec les éléments d'un conteneur, sans créer de copies inutiles.
main
#include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // Use references in range-based for loop for (const int& num : numbers) { // Code that works with each element directly } }
Dans le code ci-dessus, nous utilisons des références pour itérer sur un vecteur. Cela garantit que les entrées du vecteur sont accédées directement, sans aucune copie impliquée.
Merci pour vos commentaires !