Es empfiehlt sich, sich keine Gedanken über Ihre Header-Strategie zu machen, solange diese kompiliert wird.
Der Header-Abschnitt Ihres Codes ist nur ein Zeilenblock, den sich niemand ansehen sollte, bis ein leicht zu behebender Kompilierungsfehler auftritt. Ich verstehe den Wunsch nach 'richtigem' Stil, aber keiner von beiden kann wirklich als richtig bezeichnet werden. Das Einschließen eines Headers für jede Klasse führt mit größerer Wahrscheinlichkeit zu lästigen auftragsbezogenen Kompilierungsfehlern. Diese Kompilierungsfehler spiegeln jedoch auch Probleme wider, die durch sorgfältiges Codieren behoben werden könnten (obwohl es sich nicht lohnt, sie zu beheben).
Und ja, Sie werden diese auftragsbezogenen Probleme haben, sobald Sie anfangen, an friend
Land zu kommen.
Sie können sich das Problem in zwei Fällen vorstellen.
Fall 1: Sie haben eine kleine Anzahl von Klassen, die miteinander interagieren, beispielsweise weniger als ein Dutzend. Sie fügen diese Header regelmäßig hinzu, entfernen sie und ändern sie auf andere Weise, so dass sich dies auf ihre gegenseitigen Abhängigkeiten auswirkt. Dies ist der Fall, den Ihr Codebeispiel vorschlägt.
Die Kopfzeilen sind so klein, dass es nicht schwierig ist, auftretende Probleme zu lösen. Alle schwierigen Probleme werden behoben, indem ein oder zwei Header neu geschrieben werden. Wenn Sie sich Gedanken über Ihre Header-Strategie machen, lösen Sie Probleme, die es nicht gibt.
Fall 2: Sie haben Dutzende von Klassen. Einige der Klassen stellen das Rückgrat Ihres Programms dar, und das Umschreiben ihrer Header würde Sie dazu zwingen, einen großen Teil Ihrer Codebasis neu zu schreiben / neu zu kompilieren. Andere Klassen verwenden dieses Rückgrat, um Dinge zu erreichen. Dies ist ein typisches Geschäftsumfeld. Überschriften sind über Verzeichnisse verteilt und Sie können sich nicht realistisch an die Namen von allem erinnern.
Lösung: An diesem Punkt müssen Sie sich Ihre Klassen in logischen Gruppen vorstellen und diese Gruppen in Überschriften zusammenfassen, die Sie davon abhalten, immer wieder neu zu beginnen #include
. Dies vereinfacht nicht nur das Leben, sondern ist auch ein notwendiger Schritt, um vorkompilierte Header zu nutzen .
Sie beenden den #include
Unterricht, den Sie nicht brauchen, aber wen interessiert das ?
In diesem Fall würde Ihr Code so aussehen ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}