多くの小さなクラスの分布
-
15-10-2019 - |
質問
私は呼ばれる基本クラスを持っています EventArgs
. 。これから導き出されたのは、特定の種類のイベントのイベント議論を表す多くの多くの専門化です。これらのイベントの消費者は、これらの議論クラスの一部、多く、または少数のクラスを必要とする場合があります。
私の質問は、あなたはヘッダーファイルを提供しますか? 各 タイプ(さまざまなものの50以上のヘッダーファイルなど)、それらを家族にグループ化して、それらのために「一般的な」ヘッダーファイルを用意しようとしますか、それともウィンドウに注意を払い、1つの簡単なものに投げ入れますか?含めることができる使用可能なヘッダーファイル?
別のアプローチは、50個のヘッダーファイルを持つことです。その後、特定のファイルを含む「ファミリー」ヘッダーファイルを導入できます。これらの種類のものの命名規則についてはわからないので、どこにあるのかは明らかです。
私は難しいルールがないかもしれないことを知っていますが、他の開発者が自分自身が多くの小さなクラスを書いていることに気づいたときに何をしたのか疑問に思っています。
前もって感謝します。
解決
次のケースのいずれかで、2つのクラスを別々のヘッダーに入れる必要があります。
- 彼らは巨大です
- それらは無関係であるか、一緒に使用される可能性は低いです
- それらのそれぞれは、独自のヘッダー依存関係を紹介します
そうでなければ、それらを分離することはあまり意味がありません。一部の人々は、この「ヘッダーごとに1つのクラス」ルールを持っていることを知っていますが、あなたの場合は合理的ではありません。
十分な小さなファイルを含む「家族」のためのもの、特定のビルドシステム(およびファイルシステム)でこれは編集時間に影響を与える可能性があり、いずれにせよ、これを行うことにはポイントが表示されません - 通常、人々はドキュメントまたはIDEを使用しますヘッダーファイル名を見ないクラスを見つける。そのため、包含を簡素化するためだけにそれを行いますが、同じヘッダーに入れてみませんか。
他のヒント
ユーザーが一緒に使用したいと思うクラスに従って、私はそれらを家族にグループ化します。いずれにせよ、50以上の小さなヘッダーファイルが過度に見えます。
すべてのバリエーションはテンプレートではありませんでしたか?
私はGUIライブラリを開発している同様の状況にあります。最初は、すべてのコンポーネント(小さなクラスでした)が同じヘッダーとソースファイルを共有していました。これはかなりうまくいきました。後でそれらを個別のファイルに入れようとしましたが、実際には何も改善しませんでした。これらのファイルを検索するのに多くの時間を費やす負担を追加しました。
それはさておき、Poco C ++ライブラリからインスピレーションを得ることができるかもしれません。このライブラリは通常、ヘッダーIdiomごとに1つのクラスに従いますが、例外があります。たとえば、例外階層全体は、マクロベースのシステムを使用して1つのヘッダーとソースファイルにコード化されています(参照 Exception.H と Exception.cpp).
それらが同じ継承階層に属している場合、それらを同じ.hファイルに置きます。クラスの正しい順序を決定するのに役立ちます。 C ++であまり知られていないコンパイル時間チェックの1つは、.hファイルのクラスの正しい順序に依存しています。