0

最大4つの整数で構成される主キーを持つテーブルに基づいてデータの視覚化を構築しています。例:

5
015
1234

アプリケーション全体で、これらのエンティティに主要な規則を使用する必要があり、オプションを検討しています。私の懸念は、開発者がタイプに十分な注意を払っていない場合、先行ゼロ/ esが削除され、ルックアップなどを実行するときにエラーが発生することです。

regions["15"];

regions : {
  "015" : {name: "ABC", ...}
}

私はこれをどのように扱うべきだと思いますか?
障壁を課さずにエラーを防ぐにはどうすればよいですか?

4

2 に答える 2

0

これは難しい呼びかけであり、両方向に賛否両論があります。

データをとして保存する場合object、先行ゼロに関する問題コードの問題はありません。

一方、データにアクセスしようとするとarray、先行ゼロが削除されます。注意を払っていないコーダーは、簡単に間違いを犯し、間違った方法でデータにアクセスする可能性があります。残念ながら、間違いはどちらの方向にも起こり得ます。どちらの選択も特効薬ではありません。

前回このような状況にあったとき、他のコーダーに次のようなキーstringではなくキーであることを思い出させるために、すべてのキーの前に定数文字を付けることにしました。numeric

regions : {
  "R015" : {name: "ABC", ...}
}

モジュールを設定し、独自のゲッターとセッターを定義して、必要に応じて定数を追加/削除することもできます。

于 2012-11-23T15:58:34.590 に答える
0

2 つの問題があります。1 つは 10 進数の変換による先行ゼロの損失、もう 1 つは先行ゼロが、不注意な変換 (基数なしなど) で 8 進数を扱っていることを JavaScript に示すという事実ですparseInt

問題を回避する最も簡単な方法は、実際にはキーに別のプレフィックス文字、アンダースコア、文字、またはその他の文字を提供することです。API では、高度なアクセサーのプレフィックス文字を要求しながら、選択したこれらを取り除くことができます。

開発者にプレフィックス文字の入力を要求することで、常に文字列を取得し、4 文字の数値文字列を文字列として構築することが保証されます。

もう 1 つの方法は、アクセス関数に check を具体的に入力することですが、これを介してネイティブ キー アクセスを提供している場合は、[]これはオプションではありません (javascript の将来のバージョンがObject.observeサポートを提供するまで)。

于 2012-11-23T15:56:04.317 に答える