DotNet编码规范(讨论),欢迎大家来完善。

做完几个项目后,想对以前在编码规范上的一些理解做成文档,以指导以后的开发。于是在网上找了些资料并结合自己的理解做了个文档出来。在这也起个抛砖引玉的作用,欢迎大家来完善

一、命名规范

说明

常用的命名风格如下。

1Pascal风格:包含一到多个单词,每一个单词第一个字母大写,其他字母小写,其余字母均小写。例如:CollegeStudentHelloWorld等。

2Camel风格:包含一到多个单词,第一个单词首字母小写,其余单词首字母大写,其他字母均小写。例如:namegendersomePara等。

 

注意事项:使用英文命名规则,尽量不使用缩写,禁止使用下划线。

 

1.  DotNet专属对象命名规范:

此命名规范规定了DotNet中专属的各类语言元素的命名规范:

l  Pascal:命名空间、类、方法、委托、属性、结构、接口、常量变量均使用Pascal命名规范。

l  Camel:私有成员、局部变量、参数、页面控件变量均使用Camel风格。

l  文件名和类名要匹配。

l  当类只用于作为其他类的基类,根据情况,以Base结尾。  Class CarBase

l  接口需在添加第一个字母I表示其是个接口。

l  成员变量与其对应的属性的差别只在于第一个字母的大小写。

l  命名空间使用以下格式:CompanyName.SolutionName.ProjectName[.ModuleName]

 

2.  JavascriptCSSHtml命名规则

此命名规范规定了javascriptcss中专属的各类语言元素的命名规范:

l  Pascaljs类名使用Pascal风格。

l  Cameljs变量、js参数、js函数、css类名、html标签IDHtml标签均使用Camel风格。

l  js私有变量需加下划线前缀进行标注。

 

3.  SqlServer数据库命名规则

此命名规范规定了SqlServer中专属的各类元素的命名规范:

l  Pascal:就名字本身而言,数据库、表、视图、存储过程、自定义函数、自定义数据类型、触发器均使用Pascal风格。但部分命名需加前缀的下面已给出。

l  视图名使用小写字母v为前缀。

l  存储过程名使用小写字母usp为前缀。

l  自定义函数名使用小写字母ufn为前缀。

 

 

4.  组织结构命名规范

l  PascalDotNet解决方案、DotNet项目、DotNet专属文件、文件夹均使用Pascal风格。

l  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

 

二、注释规范

1.  文件头注释

/******************************************************************

* 版权:

* 功能描述:

* 创建时间:

* 作者:

* 版本:

* 修订描述:

* 最后修订日期:

******************************************************************/

 

 

三、编码准则

1.   避免过长的方法,方法体应该少于60行。

2.   避免使用诸如0,1,2之类的字面状态量,应该使用更有表达意义的const变量或枚举来取代。

3.   拒绝代码冗余,冗余是代码腐化的根源。

4.   坚持单一职责原则,一个类只因有一个变化的原因。

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. 异常处理

l  错误消息而应给出具体错误消息和相应的用户需要做的操作。

l  千万不要捕捉了异常却什么也不做。异常信息要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。 

l  别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息如果应用程序需要,可以编写自己的异常类。对自定义的异常类加上后缀Exception

l  不必每个方法都用try-catch。当特定的异常可能发生时才使用。不必在所有方法中捕捉一般异常。不管它,让程序崩溃。这将帮助你在开发周期发现大多数的错误。

l  数据库操作和文件操作时,finally很必要。






转载于:https://www.cnblogs.com/wangqiaosm/archive/2009/07/26/1531079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值