2

Classic ASP に 200 以上の case ステートメントがあり、制御不能になっています。選択されたケースに基づいて、5 つの変数が設定されます。住所、電話、名前など。変数を設定するだけで、それぞれの場合に他には何も設定しません。

データベースまたはファイルは、このアプリケーションのオプションではありません。

Perl の世界から来た私は、ハッシュを使用してこの情報を保存します。

4

7 に答える 7

3

暴走?もう制御不能だと思います!

ケースを「x」個の一般的な領域に分類し、ヘルパー ルーチンに分割することはできませんか?

于 2008-09-08T16:55:47.027 に答える
3

ブライアンさん、Perl ハッシュに相当する従来の ASP はScripting.Dictionaryオブジェクトです。

于 2008-09-08T17:18:34.133 に答える
1

パフォーマンスに何を求めるかによります。

case ステートメントは醜いですが、割り当てが必要なメモリを消費しません。

ただし、フィールドのクラスを作成し、それらのインスタンスを Dictionary にロードすることはできます。この操作は global.asp スクリプトで実行して、一度だけ実行されるようにします。ディクショナリをグローバル asp コレクションに格納して、1 回だけ割り当てられ、各ページ呼び出しで使用されるようにします。

ここであまり具体的になっていないことをお詫びします... しばらく経ちました。

于 2008-09-09T11:39:53.890 に答える
1

多くの人が従来の ASP に VBScript を使用していますが、代わりにサーバー上で JavaScript / JScript を使用することもできます。実際のところ、最終的に .NET に移行する前に従来の ASP を実行する場合、これが私の好みの方法です (場合によっては、特殊なケース (切断されたレコードセット、ExecuteNoRecords など) のために VBScript を混在させる必要があります)。VBScript よりも優れた OOP サポートを提供します。たぶん、後で何らかの戦略パターンにリファクタリングしてみてください。長期的にはより良いメンテナンスのために検討する価値があります。

于 2008-09-09T17:26:18.053 に答える
1

これをデータベースやテキスト ファイルに移行できないという事実は、この種のデータに最適なソリューションであるため、少し問題です。ただし、コードに含める必要がある場合は、事前に定義したマトリックスにいつでも入れてみることができます。次に、マトリックス内の特定の行からデータを返す関数を提供できます。

于 2008-09-09T17:32:33.387 に答える
0

スクリプト辞書は、私見の最良のオプションです。

于 2008-09-13T05:14:39.820 に答える
0

これはデータベースで行う必要がありますが、それはオプションではないと言ったので、コード内にすべて存在する必要があるため、書くものはswitchステートメントほど複雑ではありません(データベースなしの条件によるとファイルなし)。

つまり、データベースの概念が複雑すぎる場合は、Excel スプレッドシートを使用できますが、技術的にはそれもファイルになります!

于 2008-09-09T17:23:16.063 に答える