一份我现在开始慢慢执行的C#命名规范
以前开发的时候基本上都没什么具体的格式规范在执行,导致代码存放的时间一长后再去维护的时候发现这个变量或者这个参数代表的意思都不怎么明白了!这份规范是我集合了一些网络公司以及自己的一些开发习惯综合而来,发表上来给大家参考一下,有时候必要的规范还是需要 的,毕竟你做出来的东西后来由自己来维护的几率比较大!
1 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
|
2 WinForm Control 命名规范
数据类型
|
数据类型简写
|
标准命名举例
|
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
|
3 WebControl 命名规范
数据类型
|
数据类型简写
|
标准命名举例
|
AdRotator
|
adrt
|
Example
|
Button
|
btn
|
btnSubmit
|
Calendar
|
cal
|
calMettingDates
|
CheckBox
|
cbo
|
cboBlue
|
CheckBoxList
|
chkl
|
chklFavColors
|
CompareValidator
|
valc
|
valcValidAge
|
CustomValidator
|
valx
|
valxDBCheck
|
DataGrid
|
dgrd
|
dgrdTitles
|
DataList
|
dlst
|
dlstTitles
|
DropDownList
|
ddl
|
dropCountries
|
HyperLink
|
hlk
|
hlkDetails
|
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
|
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
|
Literal
|
ltl
|
ltlTitle
|
4、数据库命名规范:
A、表命名:TB_表名,表名首字符大写,如:DepartmentUsers;
B、表主键名称为:表名+ID,如Document表的主键名为:DocumentID
C、存储过程命名:表名+方法,如:p_my_NewsAdd,p_my_NewsUpdate;
D、视图命名:TV_表名,如:TV_News;
E、Status为表中状态的列名,默认值为“N”,在表中删除操作将会改变Status的值而不真实删除该记录;
F、Checkintime为记录添加时间列,默认值为系统时间;
G、表、存储过程、视图等对象的所有都为dbo,不要使用数据库用户名,这样会影响数据库用户的更改。
5、C#编程命名标准:
名称空间的命名
命名名称空间的一般规则如下:
CompanyName.TechnologyName
这样,我们看到的名称空间应该是这样的:
Microsoft.Office
PowerSoft.PowerBuilder
注意:这只是一个原则。第三方公司可以选择其它的名字。
避免用公司名称或其它著名品牌的名称作为名称空间的前缀,这样会造成两个公布的名称空间有同一个名称的可能性。
例如: 将微软提供的Office自动类命名为Microsoft.Office
使用Pascal大写方式,用逗号分隔逻辑成分。
例如:Microsoft.Office.PowerPoint
如果你的品牌使用的是非传统大写方式,那么一定要遵循你的品牌所确定使用的大写方式,即使这种方式背离了通常的名称空间大写规则。
例如: NeXT.WebObjects
ee.cummings
类和类成分的命名
类的命名原则是用名词或名词短语命名类,使用Pascal大写。减少类名中缩写的使用量。不要使用任何类前缀(比如C),不要使用带下划线的字符。
例如: public class FileStream {}
public class Button {}
public class String {}
变量的命名
名称中各单词首字母均为大写。
例如: FindLastRecord
RedrawMyForm
在内部范围中避免使用与外部范围中的名称相同的名称。若访问错误变量,则会产生错误结果。若变量与同一名称的关键字冲突,则必须在关键字前加适当的类型库以作标识。
例如:若有一个名为 date 的变量,只能通过调用 System.Date 来使用内部 Date 函数。
函数和方法的命名
函数和方法的命名应该以动词开始,使用Pascal大写。不要使用带下划线的字符。
例如: InitNameArray
CloseDialog
接口命名原则
使用名词或名词短语,或者描述行为的形容词来命名接口,使用Pascal大写。 减少接口名中缩写的使用量,在接口名前加前缀I,以表示这个类型是一个接口。
例如: IComponent(描述性名词)
ICustomAttributeProvider(名词短语)
IPersistable(形容词)
参数的命名
使用描述性参数名。参数名应该具有足够的描述性,这样在大多数情况下参数名和它的种类可以用来确定它的意思。根据参数的意思来命名参数,而不是根据参数的种类来命名。我们希望开发工具可以用很方便的方式提供关于参数种类的信息,这样参数名可以得到更好的使用,可以对语义而不是对种类进行描述。但是偶尔使用根据类型命名的参数名也是完全可以的。不要使用保留参数。如果在下一个版本中需要更多的数据,可以增加进来。
例如: Type GetType (string typeName)
string Format (string format, object [ ] args)
属性的命名
用名词或名词短语命名属性,属性与类型要一样。 用与一个类型的名称相同的名字来命名属性时,就使这个属性的类型成为那个类型。虽然听起来有些奇怪,但这是正确的。
例如: public enum Color {...}
public class Control {
public Color Color {get {...} set {...}}
}
事件的命名
用EventHandloer后缀命名事件处理程序,使用名为sender和e的两个参数,Sender参数代表提出事件的对象。Sender参数永远是一个类型对象,即使它可能使用了更为特定的类型,与事件相关的状态被封装在一个名为e的事件类范例中。要使用这个类型的正确的、特定的事件类。
例如:public delegate void MouseEventHandler(object sender, MouseEvent e);
命名事件名时,需要有之前和之后的时态概念,因此要使用现在时态和过去时态(不要使用BeforeXxx\\AfterXxx的方式)。例如,可以被取消的结束事件就有Closing事件和Closed事件。
长项和常用项的命名
可使用缩写使名称长度适中,通常,多于 32 个字符的变量名在低分辨率的监视器上难以阅读。同时,请确保缩写在整个应用程序中保持一致。
例如:可以使用“HTML”代替“HyperText Markup Language”。
代码书写格式规范
² 文件之中不得存在无规则的空行,比如说连续十个空行。一般来讲函数与函数之间的空行为2-3行。
² 在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。
² 每行长度尽量避免超过屏幕宽度,应不超过80个字符。
² 尽量用公共过程或子程序去代替重复的功能代码段。
² 使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。如将 x=a*b/c*d 写成 x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。
² 避免采用过于复杂的条件测试。
² 避免过多的循环嵌套和条件嵌套。
² 一个函数不要超过200行。一个文件应避免超过2000行。
² 避免使用goto语句。
² 避免采用多赋值语句,如x = y = z;。
代码注释规范
.cs文件的注释
所有.cs文件开头都要加上注释,写明文件创建时间、作者、用途概述等
例如:
//********************************************************
//新增日期:2004.7.19
//作者:XXX
//內容说明: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//********************************************************
函数过程注释 所有的函数体开头都要加上注释,所以注释使用.NET注释规范。
例如:
/// <summary>
/// 构造函数
/// </summary>
/// <param name='is_xxx1'>示例参数1</param>
/// <param name='is_xxx2'>示例参数2</param>
public UpgradeThread(string is_xxx1, string is_xxx2)
{
//…
}
常量变量注释
所有的常量变量,无论是全局还是局部使用的,凡是对代码整体起到关键性做用的都需要加上注释。
例如:
/// <summary>
/// 当前线程指向的备份文件本地保存路径
/// </summary>
public string StorePath = '';
代码修改注释
当开发者维护以前的程序代码时,需要在修改处的开始及结尾,加上自己的注释信息。
例如:
//BEGIN
//END