【转】C#命名规范
原文地址:http://www.jb51.net/article/57163.htm
本文详细汇总了C#常用的命名规则。分享给大家供大家参考。具体如下:
Pascal 规则
每个单词开头的字母大写(如
TestCounter).
Camel 规则
除了第一个单词外的其他单词的开头字母大写. 如.
testCounter.
Upper 规则
仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则.
例如:
代码如下:
{
public const PI =
...
public const E = ...
public const FeigenBaumNumber =
...
}
具体的规则总结如下:
类命名指导
- 类名应该为名词及名词短语,尽可能使用完整的词.
- 使用Pascal规则
- 不要使用类前缀 - 不要使用下划线字符 (_)。
-
有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称
IdentityStore 就是适当的。
-
在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception
的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button
对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control
作为类名称的一部分将使名称不必要地加长。
接口命名规则
- 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or
IEnumberable)
- 使用Pascal规则
-
使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
例如:
代码如下:
{
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结尾
代码如下:
Attribute
{
}
自定义的异常以Exception结尾
代码如下:
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 注意 总是以 Exception 后缀结尾。 |
|
只读的静态字段 |
Pascal |
RedValue |
|
接口 |
Pascal |
IDisposable 注意 总是以 I 前缀开始。 |
|
集合 |
Pascal |
CustomerCollection 注意 总是以Collection结束 |
|
方法 |
Pascal |
ToString |
|
命名空间 |
Pascal |
System.Drawing |
|
参数 |
Camel |
typeName |
|
属性 |
Pascal |
BackColor |
|
受保护的实例字段 |
Camel |
redValue 注意 很少使用。属性优于使用受保护的实例字段。 |
|
公共实例字段 |
Pascal |
RedValue 注意 很少使用。属性优于使用公共实例字段。 |
变量和方法参数命名:根据不同的数据类型前缀+首字母大写的变量描述
与变量命名相关
|
类型 |
前缀 |
示例 |
|
Array |
arr |
arrShoppingList |
|
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 |
与页面控件有关
|
数据类型 |
数据类型简写 |
标准命名举例 |
|
Label |
lbl |
lblMessage |
|
LinkLabel |
llbl |
llblToday |
|
Button |
btn |
btnSave |
|
TextBox |
txt |
txtName |
|
MainMenu |
mmnu |
mmnuFile |
|
CheckBox |
chk |
chkStock |
|
RadioButton |
rbtn |
rbtnSelected |
|
GroupBox |
gbx |
gbxMain |
|
PictureBox |
pic |
picImage |
|
Panel |
pnl |
pnlBody |
|
DataGrid |
dgrd |
dgrdView |
|
ListBox |
lst |
lstProducts |
|
CheckedListBox |
clst |
clstChecked |
|
ComboBox |
cbo |
cboMenu |
|
ListView |
lvw |
lvwBrowser |
|
TreeView |
tvw |
tvwType |
|
TabControl |
tctl |
tctlSelected |
|
DateTimePicker |
dtp |
dtpStartDate |
|
HscrollBar |
hsb |
hsbImage |
|
VscrollBar |
vsb |
vsbImage |
|
Timer |
tmr |
tmrCount |
|
ImageList |
ilst |
ilstImage |
|
ToolBar |
tlb |
tlbManage |
|
StatusBar |
stb |
stbFootPrint |
|
OpenFileDialog |
odlg |
odlgFile |
|
SaveFileDialog |
sdlg |
sdlgSave |
|
FoldBrowserDialog |
fbdlg |
fgdlgBrowser |
|
FontDialog |
fdlg |
fdlgFoot |
|
ColorDialog |
cdlg |
cdlgColor |
|
PrintDialog |
pdlg |
pdlgPrint |
与页面控件有关
|
数据类型 |
数据类型简写 |
标准命名举例 |
|
AdRotator |
adrt |
Example |
|
Button |
btn |
btnSubmit |
|
Calendar |
cal |
calMettingDates |
|
CheckBox |
chk |
chkBlue |
|
CheckBoxList |
chkl |
chklFavColors |
|
CompareValidator |
valc |
valcValidAge |
|
CustomValidator |
valx |
valxDBCheck |
|
DataGrid |
dgrd |
dgrdTitles |
|
DataList |
dlst |
dlstTitles |
|
DropDownList |
drop |
dropCountries |
|
HyperLink |
lnk |
lnkDetails |
|
Image |
img |
imgAuntBetty |
|
ImageButton |
ibtn |
ibtnSubmit |
|
Label |
lbl |
lblResults |
|
LinkButton |
lbtn |
lbtnSubmit |
|
ListBox |
lst |
lstCountries |
|
Panel |
pnl |
pnlForm2 |
|
PlaceHolder |
plh |
plhFormContents |
|
RadioButton |
rad |
radFemale |
|
RadioButtonList |
radl |
radlGender |
|
RangeValidator |
valg |
valgAge |
|
Regularexpression_r |
vale |
valeEmail_Validator |
|
Repeater |
rpt |
rptQueryResults |
|
RequiredFieldValidator |
valr |
valrFirstName |
|
Table |
tbl |
tblCountryCodes |
|
TableCell |
tblc |
tblcGermany |
|
TableRow |
tblr |
tblrCountry |
|
TextBox |
txt |
txtFirstName |
|
ValidationSummary |
vals |
valsFormErrors |
|
XML |
xmlc |
xmlcTransformResults |
希望本文所述对大家的C#程序设计有所帮助。
【转】C#命名规范的更多相关文章
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- Java命名规范
驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名. 为避免歧 ...
- JavaScript知识点总结(命名规范,变量的作用域)
命名规范 有人说JavaScript的宽容性是这个语言最糟糕的方面之一.比如说想把2个数字加在一起,JavaScript会把其中一个数字解析成字符串,那么就会得到一个奇怪的字符串,而不是2个数字的和. ...
- js的命名规范
js的命名规范 1.驼峰命名法:首字母是小写的,接下来的字母都以大写字符开头.例如: var testValue = 0; var oneValue = 10; 2. ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- [No000099]软件版本命名规范
软件版本阶段说明 Base: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构. Alpha: 此版本表示该软件在 ...
- Google C++命名规范
时间:2014.03.02 地点:基地 -------------------------------------------------------------------------------- ...
- javascript命名规范
javascript命名规范 3.命名 命名的方法通常有以下几类: a).命名法说明 1).camel命名法,形如thisIsAnApple 2).pascal命名法,形如ThisIsAnApple ...
- Android 命名规范 (提高代码可以读性)
android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高代码可以读性) 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名 ...
- Android资源(图片)命名规范
(转自:http://www.jb51.net/article/38796.htm) 图片命名注意: 1,不能以下划线("_")开头: 2,以数字加下划线("[0-9]_ ...
随机推荐
- Unity内存存储揭秘
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- Vim技能修炼教程(9) - 缓冲区和标签页
缓冲区 上一节我们学习了窗口相关的命令,其实多窗口的最大功能在于存放多个不同的缓冲区. 文件载入内存之后,我们操作的其实是缓冲区.:write命令就是将缓冲区写回文件的目的. 查看内存中的缓冲区 通过 ...
- Vim技能修炼教程(1) - 使用vundle管理插件
世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...
- runtime查找 UIAlertAction 的key 及 UIActionSheet 设置字体颜色
修改不了颜色了 结果发现kvo 的key 不对 哎 直接上代码 设置正确的属性找到对应的key 还以为iOS 11改变了方法 unsigned int count; Ivar *ivars = c ...
- 機器學習基石 机器学习基石(Machine Learning Foundations) 作业2 第10题 解答
由于前面分享的几篇博客已经把其他题的解决方法给出了链接,而这道题并没有,于是这里分享一下: 原题: 这题说白了就是求一个二维平面上的数据用决策树来分开,这就是说平面上的点只能画横竖两个线就要把所有的点 ...
- 原生Ajax使用
Ajax基础 Ajax(Asynchronous JavaScript And XML)概念:通过XMLHttpRequest对象向服务器提出请求并处理响应,进行页面的局部更新. AJAX都有哪些优点 ...
- CALayer2-创建新的层
本文目录 一.添加一个简单的图层 二.添加一个显示图片的图层 三.为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UIColor和UIImage? 四.UIV ...
- Hadoop 2.2 & HBase 0.96 Maven 依赖总结
由于Hbase 0.94对Hadoop 2.x的支持不是非常好,故直接添加Hbase 0.94的jar依赖可能会导致问题. 但是直接添加Hbase0.96的依赖,由于官方并没有发布Hbase 0.96 ...
- [BZOJ2115][WC2011]最大XOR和路径
bzoj luogu sol 首先很显然的,答案等于1到n的任意一条路径的异或和与若干个环的异或和的异或和. 因为图是联通的,那么就可以从一个点走到任意一个想要走到的环上,走完这个环后原路返回,那么中 ...
- hessian协议原理
Hessian 原理分析 一. 远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . t ...