ベンダーから提供された本番環境で、いくつかの既存のコードに出くわしました。文字列を使用してカンマ区切りの値を保存し、DB からフィルタリングされた結果を保存します。これは、AIX システムに存在するデータベースとインターフェースをとるPowerOnという独自のスクリプト言語用ですが、文字列、整数、および配列をサポートする言語であることに注意してください。
たとえば、次のようなものがあります。
Account
----------------
123
234
3456
28390
疑似コードは次のようになります。
Define accounts As String
For Each Account
accounts=accounts + CharCast(Account) + ","
End
私が期待するものとは対照的に
Define accounts As Integer Array(99)
Define index as Integer=0
For Each Account
accounts(index)=Account
index=index+1
End
ループが完了するまでに、次のaccounts
ようになります。123,234,3456,28390,
. 文字列は、後で特定のインスタンスが存在するかどうかをテストするために使用されます。
If CharSearch("28390", accounts) > 0 Then Call DoSomething
この例では、ステートメントは true と評価され、DoSomething
呼び出されます。 配列のオプションを考えると、カンマ区切り値の文字列内に整数値を格納する必要があるのはなぜですか? 私が遭遇したすべての言語で、ほとんどの場合、整数ベースの操作よりも文字列ベースの操作を実行する方がコストがかかります。
このテクニックは見たことがなく、経験も限られていることを考えると、これに名前はありますか? これは一般的な慣行ですか、それとも文字列型が強すぎる別の例ですか? 既存のコードを拡張するには、引き続き文字列メソッドを使用する必要がありますか? ベンダーから汚いコードを入手しましたか?