Ich habe eine Klasse, die aus ein paar Funktionen und vielen Operatoren besteht. Fast alle Funktionen und Operatoren verwenden Vorlagen, weshalb ich sie in der Header-Datei implementiert habe. Das machte es ziemlich schwer, etwas im Code zu finden, also entschied ich mich, alle Operatoren in ein separates Headerfile zu verschieben.Ist es in Ordnung, Klassen in mehrere Header-Dateien zu teilen?
jetzt habe ich so etwas wie:
fstring.h
class fstring{
...
#include "fstring_operators.h"
}
und fstring_operators.h
...
template<int RSIZE>
bool operator==(const fstring<RSIZE>& rhs) const {
return equals(rhs._chars, RSIZE);
}
...
Ist es in Ordnung, so etwas zu tun? Ich habe auch Header-Wächter für fstring_operators.h weggelassen, da es nirgendwo außer in fstring.h enthalten sein muss
Es ist definitiv möglich, aber kann es schwieriger machen, Ihre Klasse ohne ordnungsgemäße Dokumentation zu verstehen. Zum Beispiel wird es nicht einfach sein, einfach die Klassendeklaration zu scannen, um zu sehen, ob sie eine spezielle Methode oder einen speziellen Operator hat. –
Ich weiß nicht, ob es eine "Best Practice" ist, aber ich denke, es ist in Ordnung und kann dabei helfen, den Code sauberer zu halten. Als allgemeine Regel und nicht auf einen bestimmten Fall zu schauen, wenn Sie es zu viel benötigen, könnte es bedeuten, dass das Design Ihrer Klasse (n) verbessert werden kann. – ShinTakezou
Eine Option besteht darin, die Elementfunktionen einfach innerhalb der Klassendefinition zu deklarieren und sie anschließend zu definieren (entweder in derselben Kopfzeile oder in einer anderen Kopfzeile). Das würde es einfacher machen, die Definition zu finden, ohne zu einer anderen Datei springen zu müssen, und ohne Dateien einzuführen, die nur an bestimmten Orten enthalten sein können. –