====Règles de qualité de code==== Merci à [[https://upcoder.com/20/cc-include-guidelines|C/C++ Include Guidelines]] {{ :lang:cpp:include:upcoder_coding_blog_2020-01-04_12_30_35_.html |Archive le 13/10/2019 du 04/01/2020}} qui a le même avis sur la question que moi. ===Ne pas oublier d'​includes=== Les fichiers entêtes doivent se compiler. gcc header.hpp -fsyntax-only ===Ne pas exposer l'implémentation=== Pour les classes publiques, et si besoin pour les classes privées, masquer l'implémentation via [[helloworld:design_pattern:pont:cpp|pimpl]]. ===Éviter les inclusions multiples=== Utiliser #pragma once et non pas les #ifndef XXX_H__ #define XXX_H__ ... #endif ===Ordre d'inclusion=== D'abord les inclusions systèmes ''#include <....hpp>'', puis les inclusions locales (''#include %%"%%....h%%"%%''). ===Un entête, une classe=== Un seul fichier entête pour une ''class'', un ''enum'', une ''struct''. Cela réduit les dépendances. ===Inclure les sous-dossiers dans les includes=== Dans une même librairie, préférer l'inclusion du sous dossier depuis la racine du projet plutôt que devoir fournir une liste complète des dossiers à chercher (''-I'' dans gcc). Bon code : #include "Network/CreateSession.h" #include "Application/Settings.h" #include "ExternalLib/RakNet/RakPeerInterface.h" Mauvais code : #include "CreateSession.h" #include "Settings.h" #include "RakPeerInterface.h"