Merci à C/C++ Include Guidelines Archive le 13/10/2019 du 04/01/2020 qui a le même avis sur la question que moi.
Les fichiers entêtes doivent se compiler.
gcc header.hpp -fsyntax-only
Pour les classes publiques, et si besoin pour les classes privées, masquer l'implémentation via pimpl.
Utiliser
#pragma once
et non pas les
#ifndef XXX_H__ #define XXX_H__ ... #endif
D'abord les inclusions systèmes #include <….hpp>, puis les inclusions locales (#include "….h").
Un seul fichier entête pour une class, un enum, une struct.
Cela réduit les dépendances.
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"