Header Includes: Ist das guter Stil?
-
Hi,
eine kleine Stilfrage. Sagen wir ich habe einen Header Foo.h:
// Foo.h #include "A.h" class Foo private: A* mA; A* getA(); };Der Header inkludiert "A.h", da Foo A benutzt.
Jetzt will ich in einer anderen Datei Foo und A benutzen:// Mainclass.h #include "Foo.h" class MainClass { Foo* mFoo; A* mA; };Da Foo.h ja bereits A.h inkludiert, reicht es in MainClass.h nur Foo.h zu inkludieren. Aber ist das guter Stil? Oder sollte ich neben Foo.h noch explizit A.h inkludieren?
-
Ich persönlich würde explizit A inkludieren, um die Abhängigkeit deutlich zu machen..
-
Nachdem das geklärt: In dem konkreten Beispiel brauchst du kein Include.
-
Falls es ein Implementierungsdetail von Foo ist, A zu benutzen: Binde A.hpp und Foo.hpp separat ein.
Wenn A zu Foo dazugehört bzw. Foo.hpp ein "Gruppen-Header" ist (der mehrere Features aufs Mal verfügbar macht): Inkludiere nur Foo.hpp.
Wenn du einen Header nicht brauchst (z.B. hier): Binde ihn nicht ein.
-
-
StilFrage schrieb:
Da Foo.h ja bereits A.h inkludiert, reicht es in MainClass.h nur Foo.h zu inkludieren. Aber ist das guter Stil? Oder sollte ich neben Foo.h noch explizit A.h inkludieren?
Stilfragen lassen sich so schon selten klar beantworten, aber mit Foo und Bar geht das noch seltener.
Wenn die Bogenschütze.hpp die Fernkämpfer.hpp inkludiert und ich einen Fernkämpfer* benutze, würde ich es drauf ankommen lassen und die Abhängigkeit nicht explizit nochmal angeben.
Wenn die Bogenschütze.hpp die Vector.hpp inkludiert und ich einen Vector* benutze, würde ich vorauseilend die Abhängigkeit explizit angeben.