我在生产环境中遇到了供应商提供给我们的一些现有代码。他们使用字符串来存储逗号分隔的值,以存储来自数据库的过滤结果。请记住,这是一种名为 PowerOn 的专有脚本语言,它与 AIX 系统上的数据库接口,但它是一种支持字符串、整数和数组的语言。
例如,我们有;
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
在示例中,该语句的计算结果为 trueDoSomething
并被调用。 给定数组的选项,为什么要在一串逗号分隔值中存储整数值? 我遇到的每种语言,执行基于字符串的操作几乎总是比基于整数的操作更昂贵。
考虑到我以前没有见过这种技术,而且我的经验有些有限,有这个名字吗?这是常见的做法,还是只是另一个过于字符串化的例子?要扩展现有代码,我应该继续使用字符串方法吗? 我们是否从供应商那里获得了粗俗的代码?