Frage

Ich habe eine Basisklasse namens EventArgs. Daraus abgeleitet sind viele, viele Spezialisierungen, die Ereignisargumente für eine bestimmte Art von Ereignis darstellen. Verbraucher dieser Ereignisse benötigen möglicherweise einige, viele oder sehr wenige dieser Argumentationsklassen.

Meine Frage ist, würden Sie eine Header -Datei für die Datei zur Verfügung stellen jeder Geben Sie (z. B. über 50 Header-Dateien für die unterschiedlichen) ein, würden Sie versuchen, sie in Familien zu gruppieren und eine „gemeinsame“ Header-Datei für diese zu haben, oder würden Sie dem Fenster Vorsicht werfen und sie in eine leichte werfen. OF-Use Header-Datei, die einfach enthalten sein kann?

Ein anderer Ansatz könnte darin bestehen, 50 Header -Dateien zu haben, und dann könnte ich einige "Familien" -Header -Dateien einführen, die bestimmte enthalten. Ich bin mir nicht sicher über die Namenskonventionen für solche Dinge, daher ist offensichtlich, was dort ist.

Ich weiß, dass es möglicherweise keine harte und schnelle Regel gibt, aber ich frage mich, was andere Entwickler getan haben, wenn sie viele kleine Klassen schreiben.

Danke im Voraus.

War es hilfreich?

Lösung

Ich müsste in einem der folgenden Fälle zwei Klassen in getrennte Header stecken:

  • Sie sind riesig
  • Sie sind nicht miteinander verbunden oder sind wahrscheinlich nicht zusammen verwendet
  • Jeder von ihnen führt seine eigenen Header -Abhängigkeiten ein

Ansonsten macht es nicht viel Sinn, sie zu trennen. Ich weiß, dass einige Leute diese Regel "eine Klasse pro Header" haben, aber sie sieht in Ihrem Fall nicht vernünftig aus.

Was ist für "Familien", einschließlich vieler kleiner Dateien, in bestimmten Build -Systemen (und Dateisystemen), dies kann sich auf die Kompilierungszeit auswirken, und auf jeden Fall sehe ich keinen Punkt darin - normalerweise verwenden Personen Dokumentation oder IDE Um Klassen zu finden, ohne die Dateinamen von Headers zu betrachten. Sie würden das also nur tun, um die Inklusion zu vereinfachen, aber warum dann nicht in denselben Kopfball einbezogen werden?

Andere Tipps

Ich würde sie nach Klassen gruppieren, die Benutzer wahrscheinlich zusammen verwenden möchten. 50+ winzige Header -Dateien scheinen jeden Fall übermäßig zu sein.

Könnten nicht alle Varianten Vorlagen sein?

Ich war in einer ähnlichen Situation, in der ich eine GUI -Bibliothek entwickelt habe. Zunächst teilen sich alle Komponenten (es waren kleine Klassen) dieselbe Header- und Quelldatei. Das hat ziemlich gut funktioniert. Ich versuchte später, sie in separate Dateien zu stecken, aber es hat wirklich nichts verbessert. Es wurde nur die Belastung hinzugefügt, viel Zeit damit zu verbringen, diese Dateien zu durchsuchen.

Abgesehen davon können Sie sich vielleicht von der Poco C ++ - Bibliothek inspirieren lassen. Diese Bibliothek folgt normalerweise der einen Klasse pro Header -Idiom, es gibt jedoch Ausnahmen. Zum Beispiel wird die gesamte Ausnahmehierarchie mit einem makrobasierten System auf einer Header- und Quelldatei codiert (siehe Ausnahme.h und Ausnahme.CPP).

Wenn sie zur gleichen Erbschafthierarchie gehören, setzen Sie sie in die gleiche .h -Datei. Es hilft Ihnen, die richtige Bestellung für die Klassen zu entscheiden. Eine der weniger bekannten Kompilierungszeitprüfungen in C ++ basiert auf der richtigen Reihenfolge der Klassen in der .H-Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top