1. gzyueqian
      13352868059

      .Net(C#)開發(fā)漫談:關(guān)于變量的命名和屬性

      更新時(shí)間: 2008-06-05 14:44:17來(lái)源: 粵嵌教育瀏覽量:995

        static readonly與const的變量,作用是一樣的,無(wú)論訪問(wèn)修飾符是不是public,還是其它(private、protected、internal),變量名稱一般為大寫,中間以下劃線。

        public static readonly int MAX_HEIGHT;

        public const int MIN_HEIGHT = 10;

        有些程序員對(duì)大寫不敏感,上例中,MAX_HEIGHT用Max_Height代替也未嘗不可,甚至MaxHeight也可以。在.Net類庫(kù)中,int.MaxValue與int.MinValue便是這樣定義的。

        const常量更確切的說(shuō)是編譯時(shí)常量,因?yàn)樗谶\(yùn)行時(shí)是不存在的,在編譯中所有變量引用將被實(shí)際值替掉。而static readonly則不然,它在運(yùn)行時(shí)也是存在的。從原理上講,論效率const優(yōu)于static readonly。但是在一個(gè)比較在的項(xiàng)目中,在dll局部升級(jí)時(shí),如果改變了某個(gè)const變量的值,而未升級(jí)的dll如果也有這個(gè)const變量的話,顯而易見這時(shí)候問(wèn)題將是產(chǎn)生。如果因此而升級(jí)全部dll,反而不值。所以在大型、多變應(yīng)用中,建議使用static readonly代替const。其微乎其微的效率的減損對(duì)比升級(jí)布置可能出現(xiàn)的問(wèn)題還是可以接受的。

        除了以上兩種靜態(tài)只讀和常量變量之外,其它變量命名均以下劃線開始,訪問(wèn)修改符為private(不建議命名為internal、protected,更不建議命名為public):

      private static int _maxHeight;
                  private int _minHeight; 如果其命名不前置下劃線,易與參數(shù)變量混淆。
                  對(duì)于下面這種定義:
                  private int _minHeight = default(int);
                  public int MinHeight
                  {
                  set{
                  _minHeight = value;
                  }
                  get{
                  return _minHeight;
                  }
                  }

        初學(xué)者可能覺得有點(diǎn)畫蛇添足,不如直接命名為:

        public int MinHeight; 這樣豈不簡(jiǎn)單,干嗎還要用getter和setter封裝起來(lái),額外的函數(shù)調(diào)用也使效率有損。

        有時(shí)候在開發(fā)項(xiàng)目時(shí),開始時(shí)我們要畫的可能只是一條蛇,但是項(xiàng)目后期需求變了,改畫一條龍了。所以在項(xiàng)目初期畫蛇的時(shí)候添上一對(duì)足還是很有遠(yuǎn)見的。

        getter與setter(屬性存取器)可以像方法一樣封裝邏輯并且像變量一樣使用,建議所有非靜態(tài)只讀和常量,定義為private,然后給其添加相應(yīng)屬性存取器,用于賦值與讀取。在其它方法體內(nèi)(包涵類外與類內(nèi)),不建議直接讀寫變量。即使它目前可以被直接讀寫,我們也要通過(guò)調(diào)用屬性存取器也調(diào)用。這一點(diǎn)有點(diǎn)麻煩,但很重要,很高老手有時(shí)也會(huì)犯錯(cuò)誤。如下所示:

      private int _minHeight = int.MinValue;
                  public int MinHeight//或者是protected、internal,甚至是private
                  {
                  set{
                  _minHeight = value;
                  //即使這里目前沒有其它處理邏輯
                  }
                  get{
                  return _minHeight;
                  }
                  }
                  public void Method1(int minHeight)
                  {
                  this.MinHeight = minHeight;//在這里不要使用this._minHeight直接讀寫
                  //
                  }

        即使變量的訪問(wèn)是受保護(hù)的或者或者是私有的,也要使用屬性存取器。

        原則是:對(duì)于變量的讀取,要用屬性存取器封裝,無(wú)論其訪問(wèn)修飾符如何,即使其屬性存取器內(nèi)除了存取目前沒有任何其它邏輯。



      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 中文字幕久久少妇 | 亚洲国产精品一区 | 亚洲国产资源在线26u | 中文字幕HD天堂字幕乱码五月 | 亚洲日韩国产精品网爆门 | 伊人久久大香线蕉综合5g孕妇 |