Besoin d'explication sur les headers internes

Le problème exposé dans ce sujet a été résolu.

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. :)

+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.

+0 -0

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é.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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