私の最後の会社で、区切り文字列の特定の部分のインデックス、または SQL テーブルの列の定数を作成する非常に巧妙な方法のように見えるものに出会いましたが、パフォーマンスやその他の欠陥があるのではないかと長い間疑問に思っていました。キャッチしませんでした。
たとえば、住所情報を含む単一の区切られた文字列に 5 つのデータ フィールドがある場合、次のように表示されることがあります。
const int INDX_NAME = 0;
const int INDX_ADDR = INDX_NAME + 1;
const int INDX_CITY = INDX_ADDR + 1;
const int INDX_STATE = INDX_CITY + 1;
const int INDX_ZIP = INDX_STATE + 1;
そうすれば、将来、プログラムが名前と市区町村の間の住所の 2 行を区切る必要がある場合 (たとえば、1 行に住所、もう 1 行に部屋番号など)、プログラマーがしなければならないことは次のとおりです。行を追加
const int INDX_ADDR2 = INDX_ADDR + 1;
INDX_CITY を作成する行を次のように変更します。
const int INDX_CITY = INDX_ADDR2 + 1;
要するに、これは、特にリストが 50 個以上のアイテムであり、インデックス番号 3 に何かを追加する必要がある場合に、変更される可能性のある列/ピース インデックス リストを処理するための非常に賢い方法のように思えました。リストが大きくなり始めると、これがパフォーマンスに影響を与え始める可能性があります。または、私が見ていない他の固有の欠陥があるかどうか.
何かご意見は?この怠惰なプログラミングを巧妙ではなくするものはありますか?
ありがとう。
-編集-
得られた応答から列挙型の値がどこにあるのかがわかりますが、使用しているすべてのフィールドが互いに正確に 1 スポット離れている場合にのみ有用であることが懸念されます。他のプログラマーも参照しているデータ ストレージの一部を使用しているが、全フィールドのサブセットしか気にしないので、気にしないフィールドのブロックをスキップする必要がある場合はどうでしょうか。
たとえば、300 フィールドの長さの区切られた文字列から 100 のデータ フィールドを使用していますが、アプリケーションはフィールド 1 ~ 4 (配列のカウント) を気にしません。列挙型を使用して置き換えるクリーンな方法はありますか
const int INDX_RECORD_ID = 0;
const int INDX_DATE_UPDATED = INDX_RECORD_ID + 5;
const int INDX_USER_UPDATED = INDX_DATE_UPDATE + 1;
...
?