C Sharp/Naming

維基教科書,自由的教學讀本

原因[編輯]

大部分命名標準來自Microsoft .NET Framework庫。

習慣[編輯]

Namespace[編輯]

Namespaces使用Pascal命名法 (也稱作UpperCamelCase、大駝峰命名法)且沒有下劃線。例如: MyNewNamespace。3個或更多字母的縮寫詞也是首字母大寫(MyXmlNamespace 代替 MyXMLNamespace)。

Assembly[編輯]

如果一個assembly包含一個namespace,那麼二者應該同名。否則,assembly應該使用Pascal命名法

類和結構[編輯]

使用Pascal命名法,沒有下劃線,沒有前綴CclsI。類和它所在的namespace不應該同名。三個或更多字母的縮寫使用Pascal命名法,而不應全大寫。儘量避免縮寫。儘量使用名詞。

異常類[編輯]

名字應以Exception結尾。

Interface[編輯]

前綴以I,隨後字母大寫。例如:IFoo

函數[編輯]

使用Pascal命名法,不要用下劃線,除非事件處理器。儘量避免縮寫。

屬性和公開的成員變量[編輯]

使用Pascal命名法,不要用下劃線。儘量避免縮寫。

參數和方法級變量[編輯]

使用Pascal命名法,不要用下劃線。儘量避免縮寫。

第一個詞的首字母也可以小寫。

類級的私有或保護變量[編輯]

前綴以下劃線,然後使用Pascal命名法。聲明時總是給出protectedprivate關鍵字。

窗體上的控件[編輯]

前綴以控件類型縮寫,隨後為使用Pascal命名法,不要用下劃線。儘量避免縮寫。

ASP.Net web form control例子:

控件 前綴 例子
Label lbl lblSurname
TextBox(ASP.Net) tb tbSurname
TextBox(WinForms) txt txtUserName
DataGrid dg dgResults
GridView gv gvResults2
Button btn btnSave
ImageButton iBtn iBtnSave
Hyperlink lnk lnkHomePage
ComboBox cmb cmbYear
DropDownList ddl ddlCompany
ListBox lst lstCompany
DataList dLst dLstAddress
DataSet ds dsInvoices
DataTable dt dtClients
DataRow dr drUser
Repeater rep repSection
Checkbox chk chkMailList
CheckBoxList chk chkAddress
RadioButton rBtn rBtnGender
RadioButtonList rBtn rBtnAgeGroup
Image img imgLogo
Panel pnl pnlSevtion
PlaceHolder plh plhHeader
Calendar cal calMyDate
AdRotator adr adrBanner
Table tbl tblResults
[All] Validators val (N/A) valCreditCardNumber
ValidationSummary vals (N/A) valsErrors

常量[編輯]

使用Pascal命名法,不要用下劃線。儘量避免縮寫。見.NET Framework Design Guidelines討論。

例子[編輯]

using System;

namespace MyExampleNamespace
{
    public class Customer : IDisposable
    {
        private string _customerName;
        public string CustomerName 
        { 
            get 
            { 
                return _customerName; 
            }
            set
            {
                _customerName = value;
                _lastUpdated = DateTime.Now;
            }
        }

        private DateTime _lastUpdated;

        public DateTime LastUpdated
        {
            get
            {
                return _lastUpdated;
            }
            private set
            {
                _lastUpdated = value;
            }
        }

        public void UpdateCustomer(string newName)
        {
            if (!newName.Equals(CustomerName))
            {
                CustomerName = newName;
            }
        }

        public void Dispose()
        {
            //Do nothing
        }
    }
}