web-dev-qa-db-ja.com

C ++プログラムパラメータを格納するためのベストプラクティス

私は現在、IPCを介して互いに通信する複数のc ++プログラムを含むプロジェクトを開発しています。これらのプログラムのそれぞれは実行するためにいくつかのパラメーターに依存し、これらはいくつかのプログラム、例えばパラメーターに共通している可能性がありますカメラのキャリブレーション、minNeighbours、スケーリング係数など.

これを達成するためのベストプラクティスは何でしょうか。この段階で検討されているソリューションは次のとおりです。

  1. 値をハードコーディングする-パラメータの値を変更したい場合は、明らかに良くありません。

  2. Const [int]変数定義を含むconstants.hppファイルを含めます-私の現在の解決策。

  3. 起動時に各プログラムで解析できるconfig.txtファイル-複数のプログラムでファイルを安全に同時に開いて読み取ることができます。

  4. プリプロセッサディレクティブ、つまり#define。

どのようなソリューションでも実装できます。ベストプラクティスに関するガイダンスを本当に探しています。

1
Andrew Murtagh

パラメータに異なる値を使用してプログラムを実行することが実際に意味がある場合にのみ、config-fileまたは他のruntime-config-sourceから定数をロードします。
意味のある構成で提供されない場合は、デフォルトをサポートすることを検討してください。

コンパイル時定数をランタイム構成に不必要にエクスポートすると、コードがより複雑で効率が悪くなり、以前よりも多くの点で失敗する可能性があります。欲望。

いつコンパイル時間の見積もりをする必要がありますか?

  • それが偶然に特定の値を持っていることの横にある意味的な意味がある場合は、それを説明する名前ではなく、適切な意味を持つ必要があります。
  • コードを調整するために使用する場合。これらの定数は、ほぼ常に他の点にも該当します。
2
Deduplicator

構成をdbase /共有の場所に配置するか、各ファイルに構成のコピーを提供します。例えばそれを展開するとき、同じファイルを何度もコピーするだけです

複数のアプリケーションがファイルを読み取る場合(ファイルからの唯一の読み取り)は、共有して使用するために開くだけで問題はありません。

0
PingCrosby