Outils pour utilisateurs

Outils du site


lang:cpp:include

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:cpp:include [2020/01/04 11:26] – Création avec "Ne pas oublier d'​includes" rootlang:cpp:include [2020/01/04 19:47] (Version actuelle) – Inclure les sous-dossiers dans les includes root
Ligne 1: Ligne 1:
 ====Règles de qualité de code==== ====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=== ===Ne pas oublier d'​includes===
 Les fichiers entêtes doivent se compiler. Les fichiers entêtes doivent se compiler.
Ligne 5: Ligne 8:
 <code bash> <code bash>
 gcc header.hpp -fsyntax-only gcc header.hpp -fsyntax-only
 +</code>
 +
 +===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
 +
 +<code cpp>
 +#pragma once
 +</code>
 +
 +et non pas les
 +<code cpp>
 +#ifndef XXX_H__
 +#define XXX_H__
 +...
 +#endif
 +</code>
 +
 +===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 :
 +
 +<code cpp>
 +#include "Network/CreateSession.h"
 +#include "Application/Settings.h"
 +#include "ExternalLib/RakNet/RakPeerInterface.h"
 +</code>
 +
 +Mauvais code :
 +
 +<code cpp>
 +#include "CreateSession.h"
 +#include "Settings.h"
 +#include "RakPeerInterface.h"
 </code> </code>
  
lang/cpp/include.1578133593.txt.gz · Dernière modification : de root