在我上一家公司,我遇到了一种似乎非常聪明的方法,可以为分隔字符串的某些片段或 SQL 表中的列的索引创建常量,但我一直想知道是否存在性能或其他缺陷没抓到。
例如,如果包含地址信息的单个分隔字符串中有五个数据字段,您可能会看到以下内容:
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;
这样,如果将来程序需要在名称和城市之间分隔两行地址(例如,一行是街道地址,另一行是套房号),程序员所要做的就是添加行
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;
...
?