4

アプリケーションを作成しているときに、単一のルックアップ テーブル (整数配列) を作成しました。

ルックアップの実行中に、入力を受け取って出力を返す API を作成しました。ルックアップ テーブルはその API で定義されています。

そのルックアップ配列をグローバル スコープで const 配列として初期化する必要があります (データ セグメントに配置します)。

APIで初期化する/データセグメントで定義する利点は何ですか?

PS: ルックアップ テーブルのサイズは 50 未満です。

4

4 に答える 4

3

私の典型的なアプローチは次のとおりです。

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]; 
}
于 2013-07-04T11:20:00.563 に答える
1

すべてのソフトウェア設計で最も重要なことは、複雑さを管理することです。ルックアップ テーブルをグローバル構造として定義すると、ルックアップ テーブルにアクセスするモジュール間に不要な依存関係が後で作成される可能性があります。したがって、APIを使用することは、私見のより良いアプローチです(パフォーマンスに他の要因がないことを前提としています)。API を使用すると、たとえば、一部のモジュールが特定のサイズを想定し、エラー処理も行うことを恐れることなく、ルックアップ テーブルのサイズを変更できます。

于 2013-07-04T11:43:57.943 に答える