アプリケーションを作成しているときに、単一のルックアップ テーブル (整数配列) を作成しました。
ルックアップの実行中に、入力を受け取って出力を返す API を作成しました。ルックアップ テーブルはその API で定義されています。
そのルックアップ配列をグローバル スコープで const 配列として初期化する必要があります (データ セグメントに配置します)。
APIで初期化する/データセグメントで定義する利点は何ですか?
PS: ルックアップ テーブルのサイズは 50 未満です。
アプリケーションを作成しているときに、単一のルックアップ テーブル (整数配列) を作成しました。
ルックアップの実行中に、入力を受け取って出力を返す API を作成しました。ルックアップ テーブルはその API で定義されています。
そのルックアップ配列をグローバル スコープで const 配列として初期化する必要があります (データ セグメントに配置します)。
APIで初期化する/データセグメントで定義する利点は何ですか?
PS: ルックアップ テーブルのサイズは 50 未満です。
私の典型的なアプローチは次のとおりです。
int lookup_stuff(int stuff)
{
static const int table_of_stuff[] = { 1, 2, 7, 8, 14, 20, 24, 29, ... };
assert(stuff < sizeof(table_of_stuff)/sizeof(table_of_stuff[0]));
/* if stuff comes from an external source, such as a user modifiable text file,
the assert should be converted to an "if" so that it's present in all
versions of the code, not just debug builds */
return table_of_stuff[stuff];
}
すべてのソフトウェア設計で最も重要なことは、複雑さを管理することです。ルックアップ テーブルをグローバル構造として定義すると、ルックアップ テーブルにアクセスするモジュール間に不要な依存関係が後で作成される可能性があります。したがって、APIを使用することは、私見のより良いアプローチです(パフォーマンスに他の要因がないことを前提としています)。API を使用すると、たとえば、一部のモジュールが特定のサイズを想定し、エラー処理も行うことを恐れることなく、ルックアップ テーブルのサイズを変更できます。