4
OOPアプリケーションでのパラメーター管理
OOPの原則を実践する方法として、C ++で中規模のOOPアプリケーションを作成しています。 私のプロジェクトにはいくつかのクラスがあり、それらのいくつかはランタイム構成パラメーターにアクセスする必要があります。これらのパラメーターは、アプリケーションの起動時にいくつかのソースから読み取られます。ユーザーのhome-dirにある設定ファイルから読み込まれるものもあれば、コマンドライン引数(argv)であるものもあります。 そこで、クラスを作成しましたConfigBlock。このクラスは、すべてのパラメーターソースを読み取り、適切なデータ構造に格納します。例としては、構成ファイルまたは--verbose CLIフラグでユーザーが変更できるパスとファイル名があります。次に、ConfigBlock.GetVerboseLevel()この特定のパラメーターを読み取るために呼び出すことができます。 私の質問:このようなすべてのランタイム構成データを1つのクラスに収集することをお勧めしますか? 次に、クラスはこれらすべてのパラメーターにアクセスする必要があります。私はこれを達成するためのいくつかの方法を考えることができますが、どの方法を取るべきかはわかりません。クラスのコンストラクターは、次のようにConfigBlockへの参照を指定できます。 public: MyGreatClass(ConfigBlock &config); または、CodingBlockの定義を含むヘッダー「CodingBlock.h」を含めるだけです。 extern CodingBlock MyCodingBlock; その後、クラスの.cppファイルのみがConfigBlockのものを含めて使用する必要があります。 .hファイルは、このインターフェイスをクラスのユーザーに導入しません。ただし、ConfigBlockへのインターフェイスはまだありますが、.hファイルからは隠されています。 このように隠すのは良いですか? インターフェイスをできるだけ小さくしたいのですが、最終的には、構成パラメーターを必要とするすべてのクラスがConfigBlockに接続する必要があると思います。しかし、この接続はどのように見えますか?