私はいくつかの関数と多くの演算子で構成されるクラスを持っています。ほとんどすべての関数と演算子はテンプレートを使用しているため、ヘッダファイルに実装しています。 これはコード内で何かを見つけるのがかなり難しくなったので、私はすべての演算子を別々のヘッダファイルに移動することに決めました。複数のヘッダーファイルでクラスを分割しても問題ありませんか?
fstring.h
class fstring{
...
#include "fstring_operators.h"
}
と
...
template<int RSIZE>
bool operator==(const fstring<RSIZE>& rhs) const {
return equals(rhs._chars, RSIZE);
}
...
が、それはOK、このような何かを行うことですfstring_operators.h:
今私はのようなものがありますか?また、fstring_operators.hのヘッダーガードも省略しました.fstring.hを除いてはどこにも含めてはならないからです。
間違いなく可能ですが、適切な文書がないとクラスを理解するのが難しくなる可能性があります。たとえば、クラス宣言をスキャンして、特別なメソッドや演算子があるかどうかを調べるのは簡単ではありません。 –
"ベストプラクティス"かどうかは分かりませんが、大丈夫だと思いますし、コードをきれいに保つのに役立つかもしれません。一般的なルールとして、特定のケースを見ないで、必要以上に必要な場合は、クラスのデザインを改善することができます。 – ShinTakezou
1つのオプションは、クラス定義内でメンバー関数を宣言してから、後で(同じヘッダーまたは別のヘッダーに)定義することです。そうすれば、別のファイルにジャンプせずに、また特別な場所にしか含めることのできないファイルを導入することなく、定義を見つけることが容易になります。 –