Besoin d'explication sur les headers internes

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjours à tous,

je suis actuellement en train d'apprendre le C++ moderne avec The C++ Annotations, j'en suis a la fin du chapitre 7 sur les classes. Mon problème arrive à la fin de la section 7.11 où l’auteur introduit le concept de header interne (internal header en anglais) et je n'y comprends rien, je ne vois pas du tout leurs utilités.

J'espère que vous pourrez m'éclaircir à ce sujet et vous remercie d'avance pour vos réponses. :)

« La Nature est un livre écrit en langage mathématique », Galilée

+0 -0

Salut,

Apparemment, l'auteur ne s'attarde pas trop sur la raison pour laquelle il faudrait utiliser des internal headers. A première vue, ça me paraît assez inutile, ce serait simplement un header que le fichier d'implémentation (.cpp) devra inclure. On pourrait en fait simplement mettre le contenu de cet internal header au début du fichier d'implémentation et ça donnerait le même résultat. En ce qui me concerne, il me semble que je n'ai jamais vu de tels fichiers dans les différents codes sources que j'ai eu à compiler.

A mon avis, ça ne fait que compliquer l'organisation des fichiers. Après, peut-être que ça améliore le temps de compilation ou je ne sais quoi, sujet auquel je laisse quelqu'un d'autre répondre.

Édité par Olybri

+0 -0

Cette réponse a aidé l'auteur du sujet

Lu'!

De ce que j'ai compris, il conseille de faire ça pour éviter de refaire le travail d'inclusion quand les sources d'une classe deviennent assez conséquentes pour qu'il soit nécessaire d'avoir plusieurs fichiers source pour l'implémentation d'une classe. Auquel cas, il propose de mettre les headers qui sont nécessaires à l'implémentation de toutes les fonctionnalités dans un header interne qui ne servira qu'à ces fichiers source.

En ce qui me concerne je trouve que ce n'est qu'une solution bancale à un manque de découpage des responsabilités. Si la classe est devenu tellement énorme qu'il faille plusieurs fichiers pour implémenter ses fonctionnalités, alors c'est qu'elle a bien trop de responsabilités et que celles-ci devraient être dispersées dans différentes classes plus précises.

En tout cas, pour une classe de taille raisonnable, cela me semble profondément inutile, le risque de nuire à la clarté du source (en résumant les éléments nécessaire) est trop fort, et le risque d'oublier de supprimer les éléments devenus inutiles suite à un travail de refactoring trop élevé.

First : Always RTFM - "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein

+2 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte