DotNet命名规范参考
一、命名规范
注意事项:使用英文命名规则,尽量不使用缩写,禁止使用下划线
1. DotNet专属对象命名规范:
- 此命名规范规定了DotNet中专属的各类语言元素的命名规范:
- Pascal:命名空间、类、方法、委托、属性、结构、接口、常量变量均使用Pascal命名规范。
- Camel:私有成员、局部变量、参数、页面控件变量均使用Camel风格。
- 文件名和类名要匹配。
- 当类只用于作为其他类的基类,根据情况,以Base结尾。 Class CarBase
- 接口需在添加第一个字母I表示其是个接口。
- 成员变量与其对应的属性的差别只在于第一个字母的大小写。
- 命名空间使用以下格式:CompanyName.SolutionName.ProjectName[.ModuleName]
2. Javascript、CSS、Html命名规则
- 此命名规范规定了javascript、css中专属的各类语言元素的命名规范:
- Pascal:js类名使用Pascal风格。
- Camel:js变量、js参数、js函数、css类名、html标签ID、Html标签均使用Camel风格。
- js私有变量需加下划线前缀进行标注。
3. SqlServer数据库命名规则
- 此命名规范规定了SqlServer中专属的各类元素的命名规范:
- Pascal:就名字本身而言,数据库、表、视图、存储过程、自定义函数、自定义数据类型、触发器均使用Pascal风格。但部分命名需加前缀的下面已给出。
- 视图名使用小写字母v为前缀。
- 存储过程名使用小写字母usp为前缀。
- 自定义函数名使用小写字母ufn为前缀。
4.组织结构命名规范
- Pascal:DotNet解决方案、DotNet项目、DotNet专属文件、文件夹均使用Pascal风格。
- Camel:文件扩展名、js文件名、css文件名、图片文件名均使用Camel风格。
5. C#控件命名规范
Data Control
类 型 |
前 缀 |
示 例 |
AccessDataSource |
ads |
adsPubs |
DataList |
dlst |
dlstTitles |
DetailView |
dvw |
dvwTitles |
FormView |
fvw |
fvwFonts |
GridView |
gvw |
gvwCity |
ObjectDataSource |
ods |
odsMenus |
Repeater |
rpt |
rptQueryResults |
ReportViewer |
rvw |
rvwRecord |
SiteMapDataSource |
smds |
smdsSite |
SqlDataSource |
sds |
sdsBooks |
XmlDataSource |
xds |
xdsTitles |
Validation Control
类 型 |
前 缀 |
示 例 |
CompareValidator |
valc |
valcValidAge |
CustomValidator |
valx |
valxDBCheck |
RangeValidator |
valg |
valgAge |
RegularExpressionValidator |
vale |
valeEmail |
RequiredFieldValidator |
valr |
valrFirstName |
ValidationSummary |
vals |
valsFormErrors |
Navigation Control
类 型 |
前 缀 |
示 例 |
Menu |
mnu |
mnuUser1 |
SiteMapPath |
smp |
smpSite1 |
TreeView |
trvw |
trvwMenu |
Login Control
类 型 |
前 缀 |
示 例 |
ChangePassword |
cpwd |
cpwdUser1 |
CreateUserWizard |
cuw |
cuwLogin |
Login |
log |
logCenter |
LoginName |
logn |
lognUser |
LoginStatus |
logs |
logsUser |
LoginView |
logv |
logvUser |
PasswordRecovery |
pwdr |
pwdrUser |
WebParts Control
类 型 |
前 缀 |
示 例 |
AppearanceEditorPart |
paed |
paedPart1 |
BehaviorEditorPart |
pbed |
pbedPart2 |
CatalogZone |
zca |
zcatCity |
ConnectionsZone |
zcon |
zconDataBase |
DeclarativeCatalogPart |
pdca |
pdcaPart1 |
EditorZone |
zed |
zedNews |
ImportCatalogPart |
pica |
picaPart |
LayoutEditorPart |
pled |
pledNews |
PageCatalogPart |
ppca |
ppcaMail |
PropertyGridEditorPart |
ppge |
ppgeServer |
ProxyWebPartManager |
mpwp |
mpwpWeb |
WebPartManager |
mwp |
mwpSite1 |
WebPartZone |
zwp |
zwpSite2 |
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 |
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 |
WebControl 命名规范
类 型 |
前 缀 |
示 例 |
Adrotator |
adrt |
adrtTopAd |
BulletedList |
blst |
blstCity |
Button |
btn |
btnSubmit |
Calendar |
cal |
calMettingDates |
CheckBox |
chk |
chkBlue |
CheckBoxList |
chkl |
chklFavColors |
CompareValidator |
valc |
valcValidAge |
CustomValidator |
valx |
valxDBCheck |
DropDownList |
drop |
dropCountries |
DataGrid |
dgrd |
dgrdTitles |
DataList |
dlst |
dlstTitles |
RangeValidator |
valg |
valgAge |
FileUpLoad |
fup |
fupImage |
HiddenField |
hfld |
hfldName |
HyperLink |
hlk |
hlkDetails |
Image |
img |
imgAuntBetty |
ImageButton |
ibtn |
ibtnSubmit |
ImageMap |
imap |
imapSite |
Label |
lbl |
lblResults |
LinkButton |
lbtn |
lbtnSubmit |
ListBox |
lst |
lstCountries |
Literal |
ltl |
ltlTitle |
Localize |
loc |
locChina |
MultiView |
mvw |
mvwForm1 |
Panel |
pnl |
pnlForm2 |
PlaceHolder |
plh |
plhFormContents |
RadioButton |
rad |
radFemale |
RadioButtonList |
radl |
radlGender |
RegularExpression |
vale |
valeEmail_Validator |
Repeater |
rpt |
rptQueryResults |
RequiredFieldValidator |
valr |
valrFirstName |
SubStitution |
subs |
subsTime |
TextBox |
txt |
txtFirstName |
Table |
tbl |
tblCountryCodes |
TableCell |
tblc |
tblcGermany |
TableRow |
tblr |
tblrCountry |
ValidationSummary |
vals |
valsFormErrors |
View |
vw |
vwCity |
Wizard |
wiz |
wizRegister |
二、注释规范
- 文件头注释
/******************************************************************
* 版权:
* 功能描述:
* 创建时间:
* 作者:
* 版本:
* 修订描述:
* 最后修订日期:
******************************************************************/
三、编码准则
- 避免过长的方法,方法体应该少于60行。
- 避免使用诸如0,1,2之类的字面状态量,应该使用更有表达意义的const变量或枚举来取代。
- 拒绝代码冗余,冗余是代码腐化的根源。
- 坚持单一职责原则,一个类只因有一个变化的原因。
5. 缩进用 TAB,不用 SPACES。
6. 在每个运算符前后都空一格。
7. 花括弧 ( {} ) 需和括号外的代码对齐。每个花括弧需独立一行。
8. 用一个空行来分开代码的逻辑分组。
9. 在一个类中,各个方法需用一空行,也只能是一行分开。
10. 注释需和代码对齐。只在必需的地方注释。行数不多的注释会使代码看起来优雅。(前提是你的代码命名有意义和逻辑结构清晰)。
11. 如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。
12. 避免在同一个文件中放置多个类。
13. 避免使用大文件。如果一个文件里的代码超过500行,必须考虑将代码分开到不同类中。
14. 总是使用接口。避免只有一个成员的接口,努力保证一个接口有3~5个成员。当使用抽象类的时候,提供一个接口。
15. 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
16. 避免写超过5个参数的方法。如果要传递多个参数,使用结构。
17. 除了要在switch语句块中实现代码跳转,不要使用goto关键字。
18. 避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。否则很难知道是哪个方法在什么时候修改了它的值。
19. 在最靠近一个局部变量被使用的地方声明该局部变量。
20. 避免 string name=””; 正确 string name=String.Empty;
21. 异常处理
-
- 错误消息而应给出具体错误消息和相应的用户需要做的操作。
- 千万不要捕捉了异常却什么也不做。异常信息要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。
- 别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息如果应用程序需要,可以编写自己的异常类。对自定义的异常类加上后缀Exception。
- 不必每个方法都用try-catch。当特定的异常可能发生时才使用。不必在所有方法中捕捉一般异常。不管它,让程序崩溃。这将帮助你在开发周期发现大多数的错误。
- 数据库操作和文件操作时,finally很必要。