C Sharp/Naming
外觀
< C Sharp
原因
[編輯]大部分命名標準來自Microsoft .NET Framework庫。
習慣
[編輯]Namespace
[編輯]Namespaces使用Pascal命名法 (也稱作UpperCamelCase
、大駝峰命名法)且沒有下劃線。例如: MyNewNamespace
。3個或更多字母的縮寫詞也是首字母大寫(MyXmlNamespace 代替 MyXMLNamespace)。
Assembly
[編輯]如果一個assembly包含一個namespace,那麼二者應該同名。否則,assembly應該使用Pascal命名法。
類和結構
[編輯]使用Pascal命名法,沒有下劃線,沒有前綴C
、cls
、I
。類和它所在的namespace不應該同名。三個或更多字母的縮寫使用Pascal命名法,而不應全大寫。儘量避免縮寫。儘量使用名詞。
異常類
[編輯]名字應以Exception結尾。
Interface
[編輯]前綴以I
,隨後字母大寫。例如:IFoo
。
函數
[編輯]使用Pascal命名法,不要用下劃線,除非事件處理器。儘量避免縮寫。
屬性和公開的成員變量
[編輯]使用Pascal命名法,不要用下劃線。儘量避免縮寫。
參數和方法級變量
[編輯]使用Pascal命名法,不要用下劃線。儘量避免縮寫。
第一個詞的首字母也可以小寫。
類級的私有或保護變量
[編輯]前綴以下劃線,然後使用Pascal命名法。聲明時總是給出protected
或 private
關鍵字。
窗體上的控件
[編輯]前綴以控件類型縮寫,隨後為使用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
}
}
}