1. 程式人生 > 其它 >Attribute(特性),怎麼用才更好? —— 欄位編號被誤解了

Attribute(特性),怎麼用才更好? —— 欄位編號被誤解了

  上一篇裡(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表)裡的主鍵欄位值,見下圖。

用關聯的方式,記錄表單裡需要哪些欄位,下圖是一個檢視

上一篇的回覆比較多,直接回復的話,恐怕好多人看不到。而我覺得好像好多人都有這種誤解,所以還是單開一篇來說明一下。