熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

.NET(C#)開發漫談:關於變量的命名和屬性

2013-11-13 12:20:25  來源: .NET編程 

  static readonly與const的變量作用是一樣的無論訪問修飾符是不是public還是其它(privateprotectedinternal)變量名稱一般為大寫中間以下劃線

  public static readonly int MAX_HEIGHT;
  public const int MIN_HEIGHT = ;

  有些程序員對大寫不敏感上例中MAX_HEIGHT用Max_Height代替也未嘗不可甚至MaxHeight也可以Net類庫中intMaxValue與intMinValue便是這樣定義的

  const常量更確切的說是編譯時常量因為它在運行時是不存在的在編譯中所有變量引用將被實際值替掉而static readonly則不然它在運行時也是存在的從原理上講論效率const優於static readonly但是在一個比較在的項目中在dll局部升級時如果改變了某個const變量的值而未升級的dll如果也有這個const變量的話顯而易見這時候問題將是產生如果因此而升級全部dll反而不值所以在大型多變應用中建議使用static readonly代替const其微乎其微的效率的減損對比升級布置可能出現的問題還是可以接受的

  除了以上兩種靜態只讀和常量變量之外其它變量命名均以下劃線開始訪問修改符為private(不建議命名為internalprotected更不建議命名為public)

  private static int _maxHeight;
  private int _minHeight; 如果其命名不前置下劃線易與參數變量混淆

  對於下面這種定義

  private int _minHeight = default(int);
  public int MinHeight
  {
   set{
    _minHeight = value;
   }
   get{
    return _minHeight;
   }
  }

  初學者可能覺得有點畫蛇添足不如直接命名為

  public int MinHeight; 這樣豈不簡單干嗎還要用getter和setter封裝起來額外的函數調用也使效率有損

  有時候在開發項目時開始時我們要畫的可能只是一條蛇但是項目後期需求變了改畫一條龍了所以在項目初期畫蛇的時候添上一對足還是很有遠見的

  getter與setter(屬性存取器)可以像方法一樣封裝邏輯並且像變量一樣使用建議所有非靜態只讀和常量定義為private然後給其添加相應屬性存取器用於賦值與讀取在其它方法體內(包涵類外與類內)不建議直接讀寫變量即使它目前可以被直接讀寫我們也要通過調用屬性存取器也調用這一點有點麻煩但很重要很高老手有時也會犯錯誤如下所示

  private int _minHeight = intMinValue;
  public int MinHeight//或者是protectedinternal甚至是private
  {
   set{
    _minHeight = value;
    //即使這裡目前沒有其它處理邏輯
   }
   get{
    return _minHeight;
   }
  }
  public void Method(int minHeight)
  {
   thisMinHeight = minHeight;//在這裡不要使用this_minHeight直接讀寫
   //
  }

  即使變量的訪問是受保護的或者或者是私有的也要使用屬性存取器

  原則是對於變量的讀取要用屬性存取器封裝無論其訪問修飾符如何即使其屬性存取器內除了存取目前沒有任何其它邏輯


From:http://tw.wingwit.com/Article/program/net/201311/15697.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.