概述
Pascal 规则:
每个单词开头的字母大写。
例如:
TestCounter
Camel 规则:
除了第一个单词外的其他单词的开头字母大写.。
例如:
testCounter
Upper 规则:
仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则。例如:
public class Math
{
public const PI = …
public const E = …
public const FeigenBaumNumber = …
}
C#具体命名规则参考
类命名
- 类名应该为名词及名词短语,尽可能使用完整的词。
- 使用Pascal规则。
- 不要使用类前缀。
- 不要使用下划线字符“_”。
- 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。
- 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。
接口命名
- 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)
- 使用Pascal规则
- 使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
例如:
interface ICompare
{
int Compare();
}
枚举命名
- 对于 Enum 类型和值名称使用 Pascal 大小写。
- 少用缩写。
- 不要在 Enum 类型名称上使用 Enum 后缀。
- 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
- 总是将 FlagsAttribute 添加到位域 Enum 类型。
变量命名
- 在简单的循环语句中计数器变量使用 i, j, k, l, m, n。
- 使用 Camel 命名规则。
方法命名
- 使用Pascal规则。
- 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
- 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave。
- 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。
属性命名
- 名称应该为名词及名词短语。
- 使用Pascal规则。
- 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag。
集合命名
- 名称应该为名词及名词短语。
- 使用Pascal规则。
- 名称后面追加“Collection”。
事件命名
- event handlers命名使用 EventHandler 后缀。
- 两个参数分别使用 sender 及 e。
- 使用Pascal规则。
- 事件参数使用EventArgs 后缀。
- 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing。
- 考虑使用动词命名. 变量命名。
- 在简单的循环语句中计数器变量使用 i, j, k, l, m, n。
- 使用 Camel 命名规则。
自定义的属性以Attribute结尾
public class AuthorAttribute : Attribute
{
}
自定义的异常以Exception结尾
public class AppException : Exception
{
}
其它常用命名规则
- 代码的缩进,要用Tab,而不要用space。
- 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。
- 所有成员变量前加前缀“_”。
- 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。
- 用有意义的名字命名namespace,如:产品名、公司名。
- 始终使用"{ }"包含if下的语句,即使只有一条语句。
- 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion。
命名规范的总结表格表示如下:
与类相关
标识符 | 命名规则 | 示例 |
---|---|---|
类/结构 | Pascal | AppDomain |
枚举类型 | Pascal | ErrorLevel |
枚举值 | Pascal | FatalError |
事件 | Pascal | ValueChange |
异常类 | Pascal | WebException ① |
只读的静态字段 | Pascal | RedValue |
接口 | Pascal | IDisposable ① |
集合 | Pascal | CustomerCollection ① |
方法 | Pascal | ToString |
命名空间 | Pascal | System.Drawing |
参数 | Camel | typeName |
属性 | Pascal | BackColor |
受保护的实例字段 | Camel | redValue ② |
公共实例字段 | Pascal | RedValue ③ |
① 加粗部分是必须的。
② 很少使用,属性优于使用受保护的实例字段。
③ 很少使用,属性优于使用公共实例字段。
与变量命名相关
数据类型 | 数据类型前缀 | 标准命名举例 |
---|---|---|
Array | arr | ShoppingList |
Boolean | bln | blnIsPostBack |
Byte | byt | bytPixelValue |
Char | chr | chrDelimiter |
DateTime | dtm | dtmStartDate |
Decimal | dec | decAverageHeight |
Double | dbl | dblSizeofUniverse |
Integer | int | intRowCounter |
Long | lng | lngBillGatesIncome |
Object | obj | objReturnValue |
Short | shr | shrAverage |
Single | sng | sngMaximum |
String | str | strFirstName |
与ADO.NET有关
数据类型 | 数据类型简写 | 标准命名举例 |
---|---|---|
Connection | con | conNorthwind |
Command | cmd | cmdReturnProducts |
Parameter | parm | parmProductID |
DataAdapter | dad | dadProducts |
DataReader | dtr | dtrProducts |
DataSet | dst | dstNorthWind |
DataTable | dtbl | dtblProduct |
DataRow | drow | drowRow98 |
DataColumn | dcol | dcolProductID |
DataRelation | drel | drelMasterDetail |
DataView | dvw | dvwFilteredProducts |
与页面控件有关
数据类型 | 数据类型简写 | 标准命名举例 |
---|---|---|
AdRotator | adrt | adrtExample |
Button | btn | btnSubmit |
Calendar | cal | calMettingDates |
CheckBox | chk | chkBlue |
CheckBoxList | chkl | chklFavColors |
ColorDialog | cdlg | cdlgColor |
ComboBox | cbo | cboMenu |
CompareValidator | valc | valcValidAge |
CustomValidator | valx | valxDBCheck |
DataGrid | dgrd | dgrdTitles |
DataList | dlst | dlstTitles |
DateTimePicker | dtp | dtpStartDate |
DropDownList | drop | dropCountries |
FoldBrowserDialog | fbdlg | fgdlgBrowser |
FontDialog | fdlg | fdlgFoot |
HscrollBar | hsb | hsbImage |
HyperLink | lnk | lnkDetails |
Image | img | imgAuntBetty |
ImageList | ilst | ilstImage |
ImageButton | ibtn | ibtnSubmit |
Label | lbl | lblResults |
LinkButton | lbtn | lbtnSubmit |
ListBox | lst | lstCountries |
ListView | lvw | lvwBrowser |
MainMenu | mmnu | mmnuFile |
OpenFileDialog | odlg | odlgFile |
Panel | pnl | pnlForm2 |
PictureBox | pic | picImage |
PlaceHolder | plh | plhFormContents |
PrintDialog | pdlg | pdlgPrint |
RadioButton | rad | radFemale |
RadioButtonList | radl | radlGender |
RangeValidator | valg | valgAge |
Regularexpression_r | vale | valeEmail_Validator |
Repeater | rpt | rptQueryResults |
RequiredFieldValidator | valr | valrFirstName |
SaveFileDialog | sdlg | sdlgSave |
StatusBar | stb | stbFootPrint |
Table | tbl | tblCountryCodes |
TableCell | tblc | tblcGermany |
TabControl | tctl | tctlSelected |
TableRow | tblr | tblrCountry |
TextBox | txt | txtFirstName |
Timer | tmr | tmrCount |
ToolBar | tlb | tlbManage |
TreeView | tvw | tvwType |
ValidationSummary | vals | valsFormErrors |
VscrollBar | vsb | vsbImage |
XML | xmlc | xmlcTransformResults |
共性规则
- 标识符应当直观且可以拼读,可望文知意,不必进行“解码”。
标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。 - 标识符的长度应当符合**“min-length && max-information”**原则。
长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。单字符的名字也是有用的,常见的如 i,j,k,m,n,x,y,z 等,它们通常可用作函数内的局部变量。 - 程序中不要出现仅靠大小写区分的相似的标识符。
例如:
int x, X; // 变量x 与 X 容易混淆 - 程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。
- 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
- 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。
- 常量全用大写的字母,用下划线分割单词。
- 静态变量加前缀s_(表示static)。
- 全局变量加前缀g_(表示global)。
最后
以上就是忐忑草莓为你收集整理的C#常用的命名规则的全部内容,希望文章能够帮你解决C#常用的命名规则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复