Attribute(特性),怎麼用才更好? —— 欄位編號被誤解了
阿新 • • 發佈:2022-04-29
上一篇裡(Attribute(特性),怎麼用才更好? ),有人說,“堅決杜絕magic number ”,這個magic number指的就是欄位編號吧,其實您誤解了。
一提到欄位編號,可能有些人的第一反應就是這樣的用法:
Person1.2000020,或者Person1[2000020],或者ds[2000020]。
這麼用確實是不好的,不易讀,很容易寫錯。但是我可沒說要這麼用呀。請看實體類的定義,可能是寫在後面了,有些人沒仔細看吧。
public class Person { private string _Name; private int _Age; private string _Sex; [ColumnID(2000020)] public string Name { get { return this._Name; } set { this._Name = value; } } [ColumnID(2000040)] public int Age { get { return this._Age; } set { this._Age = value; } } [ColumnID(2000030)] public string Sex { get { return this._Sex; } set { this._Sex = value; } } }
那麼用的時候是什麼樣的呢?和普通的實體類沒什麼區別,就是 Person1.Name、Person1.Age。沒有magic number什麼事。
那麼magic number 在什麼時候用呢?在儲存資料的時候才需要用的。
我們寫一個通用的函式實現儲存資料的功能,在這裡通過反射獲得欄位編號,然後根據編號到資料庫裡提取需要的資訊。
這個過程並不需要程式設計師操心,而且也沒有具體的某個欄位編號。
所以我覺得完全不存在magic number 的缺點。這裡的欄位編號完全是給程式看的,而不是給程式設計師看的。
欄位編號 != 欄位名稱
欄位編號其實是欄位描述表(Manage_Columns表)裡的主鍵欄位值,見下圖。
用關聯的方式,記錄表單裡需要哪些欄位,下圖是一個檢視
上一篇的回覆比較多,直接回復的話,恐怕好多人看不到。而我覺得好像好多人都有這種誤解,所以還是單開一篇來說明一下。