在我最後一家公司,我遇到了創建用於某些分隔字符串或SQL表中列的索引的常量的一種非常聰明的方式,但是我一直在想如果有一個表現或其他缺陷,我沒有抓住。鏈接C#常量:
例如,如果是在一個單一的分隔字符串包含地址信息的五個數據字段,您可能會看到以下內容:
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處添加內容。但是,我不知道這個名單開始變大,或者是否有其他一些我沒有看到的固有缺陷,這會影響業績。
有什麼想法?有什麼讓這個懶惰的編程,而不是聰明?
謝謝。
CNC中
我能看到枚舉值將被賦予我已經得到的答覆,但我很擔心,如果我使用的每一個領域是他們只能將有用恰恰相距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;
...
?
不應該是性能問題,因爲它們都是常量,因此是在編譯時計算的。 – pstrjds
聽起來像它應該用枚舉代替。無論如何,常量是在編譯時進行評估的,所以唯一的性能影響是在最終在運行時稍後排序的方面。也似乎很容易出錯(例如,你說你只需要更新下面的一個,但是如果你忘記會發生什麼?) –
我不會關心那種情況下的性能。對我來說似乎是一個非常聰明的解決方案。感謝分享。 –