C#编码规范范本.docx

上传人:b****5 文档编号:11953748 上传时间:2023-04-16 格式:DOCX 页数:26 大小:499.88KB
下载 相关 举报
C#编码规范范本.docx_第1页
第1页 / 共26页
C#编码规范范本.docx_第2页
第2页 / 共26页
C#编码规范范本.docx_第3页
第3页 / 共26页
C#编码规范范本.docx_第4页
第4页 / 共26页
C#编码规范范本.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C#编码规范范本.docx

《C#编码规范范本.docx》由会员分享,可在线阅读,更多相关《C#编码规范范本.docx(26页珍藏版)》请在冰豆网上搜索。

C#编码规范范本.docx

C#编码规范范本

 

C#编码规范

CodeSpecificationforC#

(仅供内部使用Onlyforinsideofbpnet)

 

作者:

叶文良(WilliamYe)

日期:

2010年02月24日

 

C#编码规范-文档修改记录

CodeSpecificationforC#—RevisionHistory

版本号

Version

日期日期

RevisionDate

修改理由

Summary/Comment

修改作者

RevisionBy

修改的页数

RevisionPages

1.0

2010/02/24

Create

williamYe

ALL

 

 

一、目的

1.使用统一编码规范的主要原因,是使应用程序的结构和编码风格标准化,以便于阅读和理解这段编码。

2.好的编码约定可使源代码严谨、可读性强且意义清楚,与其它语言约定相一致,并且尽可能的直观。

回目录

二、适用范围

1.本规范不适用于数据库开发规范,数据库开发相关规范请参考相关文档;

2.本规范主要以C#为开发语言的规范,为开发部的原则性规范;

3.由于本规范是为撰写程序而设计,所以适用于一切有关程序撰写的工作事项。

对于具体的每个项目,可能需要对之进行裁剪和补存。

补存的内容确认之后公用的内容要更新到此规范中;

4.适用人员:

所有开发人员及代码品管人员;

5.适用产品:

所有以C#编写的代码。

回目录

三、命名空间

命名空间应使用解决方案的名称,每个项目应设置一个二级命名空间,并以项目名命名。

如下图:

SDP为解决方案(Solution)的名称,则SDP为顶级命名空间;

SDP.BF为项目名称(Assembly),则SDP.BF项目下的命名空间为:

SDP.BF.ClassName

回目录

四、文件命名规范

1.文件命名原则是更容易区分不同的文件类型,在文件名前增加三字符的前缀,前缀字母一律为小写

例如:

一个窗体文件可以增加frm前缀,frmForm1.cs

所有的前缀列表请参考本小节末尾的表格!

2.文件主体名必须用名词或动名词,且主体名必须是单词首字大写的方式表示

例如:

销货单的窗体可以命名为frmInvoice.cs,一张销货单批次作废的窗体可以命名为frmCancelInvoice.cs

3.文件名必须采用在不影响原意表达时尽量采用单词缩写的形式命名,以达到文件名的简洁明了的命名目的

例如:

应收帐款批次转凭证窗体的完整窗体名为frmTransferAccountsReceivable.cs,这时的窗体文件名太长,可以采用简写的方式,应收帐款专业简写为AR,我们可以采取这种公认的或专业的简写名词命名,最后可以命名为frmTransAR

非标准缩写单词采用去掉元音字母或半元音字母的方式命名,重复字只取一个。

例如:

Button:

btn,省图掉u,o和t。

4.文件名要和类名匹配

例如,对于类HelloWorld,相应的文件名应为HelloWorld.cs(或,HelloWorld.vb)

5.文件类型前缀一览表(/表示暂无前缀)

WinForm

扩展名

ExtensionFileName

描述

Description

前缀

Prefix

.cs

窗体文件

frm

.cs

类文件

/

WebForm

扩展名

ExtensionFileName

描述

Description

前缀

Prefix

.aspx

/

.ascx

Web用户自定义控件

wuc

回目录

五、控件命名规范

1.C#编码时,为了更直观地遍历整个窗体的控件,通常的作法是给每一种类型的控件的名称前增加统一的前缀。

前缀字符采用三个小写字母的形式表示(一般常用的控件三个字母都可以满足,也有一些控件无法更好地用三个字母缩写,详见下面的表格。

例如:

一个开始处理的按钮可以命名为:

btnBeginProc

2.控件主体名称采用名词或动名词的形式命名

例如:

1.一个单号的标签:

lblDocNo

2.一个开始处理的按钮:

btnBeginProc

3.控件主体名采用单词首字大写的形式命名

例如:

一个产生应收帐款的按钮可以命名为:

btnMakeAR

回目录

5.1WinForm内部控件命名规范

控件类型

ControlType

前缀

Prefix

例子

Example

Label

lbl

lblStartSync

LabelLink

lbk

Button

btn

TextBox

txt

MainMenu

mnu

CheckBox

chk

RadioButton

rdo

GroupBox

grp

PictureBox

pic

Panel

pan

DataGrid

grd

ListBox

lst

CheckedListBox

chklst

Combo

cbo

ListView

lstv

TreeView

trv

TabControl

tab

DateTimerPicker

dtp

MonthCalendar

cld

HScrollBar

hsb

VScrollBar

vsb

Timer

tmr

Splitter

spl

DomainUpDown

dup

NumericUpDown

nup

TrackBar

trk

ProgressBar

pgr

RichTextBox

rtxt

ImageList

imglst

HelpProvider

hlp

ToolTip

tlp

ContextMenu

mnu

ToolBar

tlb

StatusBar

sta

NotifyIcon

nti

OpenFileDialog

ofd

SaveFileDialog

sfd

FolderBrowserDialog

fbd

FontDialog

fdg

ColorDialog

cdg

PrintDialog

pdg

PrintPreviewDialog

ppd

PrintPreviewControl

ppc

ErrorProvider

erp

PrintDocument

prd

PageSetupDialog

psd

CrystalReportViewer

crv

回目录

5.2WebForm内部控件命名规范

控件类型

ControlType

前缀

Prefix

例子

Example

Label

lbl

lblTip

TextBox

txt

txtName

Button

btn

btnOK

LinkButton

lbtn

ImageButton

ibtn

HyperLink

hlk

DropDownList

ddl

ListBox

lst

DataGrid

grd

DataList

dlst

Repeater

rep

CheckBox

chk

CheckBoxList

chklst

RadioButtonList

rdolst

RadioButton

rdo

Image

img

Panel

pan

PlaceHolder

plh

Calendar

cld

AdRotator

adr

Table

tbl

RequireFieldValidator

rfv

CompareValidator

cpv

RangeValidator

rgv

RegularExpressionValidator

rev

CustomValidator

cstv

ValidationSummary

vls

Xml

xml

Litteral

ltl

CrystalReportViewer

crv

回目录

5.3C#数据组件命名规范

数据库对象

DataObject

前缀

Prefix

例子

Example

DataSet

ds

dsDept

DataTable

dt

dtDept

DataTableCollection

dtc

dtcDept

DataView

dv

dvDept

DataRow

dr

drDept

DataRowCollection

drc

drcDept

DataColumn

dc

dcField

DataColumnCollection

dcc

dccDept

DataRowView

drv

drvDept

OleDbDataProvider

OleDbDataAdapter

oleadp

OleDbConnection

oleconn

OleDbCommand

olecmd

SqlServerDataProvider

SqlDataAdapter

sqladp

SqlConnection

sqlconn

SqlCommand

sqlcmd

OdbcDataProvider

OdbcDataAdapter

odbcadp

OdbcConnection

odbcconn

OdbcCommand

odbccmd

OracleDataProvider

OracleDataAdapter

oraadp

OracleConnection

oraconn

OracleCommand

oracmd

回目录

5.4C#菜单命名规范

应用程序频繁使用许多菜单控件,对于这些控件具备一组唯一的命名约定很实用。

除了最前面"mnu"标记以外,菜单控件的前缀应该被扩展:

对每一级嵌套增加一个附加前缀,将最终的菜单的标题放在名称字符串的最后。

下表列出了一些例子。

菜单标题序列

菜单处理器名称

FileOpen

mnuFileOpen

FileSendEmail

mnuFileSendEmail

FileSendFax

mnuFileSendFax

FormatCharacter

mnuFormatCharacter

HelpContents

mnuHelpContents

当使用这种命名约定时,一个特定的菜单组的所有成员一个接一个地列在.net的“属性”窗口中。

而且,菜单控件的名字清楚地表示出它们所属的菜单项。

回目录

六、变/常量命名规范

6.1变量范围前缀

1.为了更好地区分变量的有效范围,例如Class级变量,在定义变量名时用小写字母前缀区分。

2.此约定同样适用于常量的命名。

3.常量名必须大写。

回目录

6.2变量类型前缀

1.定义变量时根据不同的变量类型增加特定的变量类型前缀,一般为小写的三个字母表示

2.变量主体名与控件主体名和窗体主体名的命名方式一致,采用单词首字大写的方式命名

数据类型

Datatype

CLR类型

CLRType

前缀

Prefix

例子

Example

bool

System.Boolean

bln

byte

System.Byte

byt

sbyte

System.SByte

sbyt

char

System.Char

chr

decimal

System.Decimal

dec

double

System.Double

dbl

float

System.Single

flt

int

System.Int32

int

uint

System.UInt32

uint

long

System.Int64

lng

ulong

System.UInt64

ulng

short

System.Int16

sht

ushort

System.UInt16

usht

string

System.String

str

datetime

System.DateTime

dtm

object

System.Object

obj

枚举

enu

Structure

stru

综上所述,变量命名格式为:

<特殊类型前导字(都为小写字母)><类型前缀><变量名字>

特殊类型前导字:

前导字

数据型态

a

任何型态的数组(不区分为几维的数组)

m

Class级变量前缀

I

所有接口声明及变量都应以大写I作为前缀

E

枚举声明增加E前缀

有效变量定义的例子:

int[]aintCounters=newint[10];(表示一个方法级的整型计数器数组)

int[]maintCounters=newint[10];(表示一个class级的整型计数器数组)

回目录

七、方法命名规范

1.方法名的主体应该使用大小写混合形式,并且应该足够长以描述它的作用。

而且,方法名应该以一个动词起首,如InitNameArray或CloseDialog。

2.对于频繁使用的或长的项,推荐使用标准缩略语以使名称的长度合理化。

一般来说,超过32个字符的变量名在VGA显示器上读起来就困难了。

3.当使用缩略语时,要确保它们在整个应用程序中的一致性。

在一个工程中,如果一会儿使用Cnt,一会儿使用Count,将导致不必要的混淆。

回目录

八、代码注释规范

8.1代码注释约定

1.所有的方法和函数都应该以描述这段代码的功能的一段简明注释开始(方法是干什么)。

这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟—成为错误的注释。

代码本身和必要的嵌入注释将描述实现方法。

2.当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。

被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。

回目录

8.2模块头部注释规范

以一个物理文件为单元的都需要,例如﹕C#中包括cs檔

用于每个模块开头的说明,主要包括:

(粗体字为必需部分,斜体字为可选部分)

1.文件名称(FileName):

此文件的名称

2.功能描述(Description):

此模块的功能描述与大概流程说明

3.数据表(Tables):

所用到的数据表,视图,存储过程的说明,如关系比较复杂,则应说明哪些是可擦写的,哪些表为只读的。

4.作者(Author):

5.日期(CreateDate):

6.参考文档(Reference):

该档所对应的分析文档,设计文檔。

7.引用(Using)﹕开发的系统中引用其它系统的Dll、对象时,要列出其对应的出处,是否与系统有关﹙不清楚的可以不写﹚,以方便制作安装档。

8.修改记录(RevisionHistory):

若档案的所有者改变,则需要有修改人员的名字、修改日期及修改理由。

R1:

修改作者:

修改日期:

修改理由:

R2:

修改作者:

修改日期:

修改理由:

R3:

R10

R100

9.分割符:

===============(前后都要)

例图如下:

回目录

8.3方法注释规范

注意事项:

1.事件不需要头注解,但包含复杂处理时(如:

循环/数据库操作/复杂逻辑等),应分割成单一处理函数,事件再调用函数。

2.所有的方法必须在其定义前增加方法注释

3.方法注释采用///形式自动产生XML标签格式的注释

///

///…

///

///

///

标记

说明

备注

提供了一种将说明中的文本标记为代码的方法

提供了一种将多行指示为代码的方法

可以指定使用方法或其他库成员的示例。

一般情况下,这将涉及到标记的使用。

对可从当前编译环境中获取的异常的引用。

得以引用描述源代码中类型和成员的另一文件中的注释。

用于定义表或定义列表中的标题行。

用于诸如

等标记内,使您得以将结构添加到文本中。

应当用于方法声明的注释中,以描述方法的一个参数。

提供了一种指示词为参数的方法。

得以将成员的访问记入文档。

用于添加有关某个类型的信息,从而补充由

所指定的信息。

应当用于方法声明的注释,以描述返回值。

得以从文本内指定链接。

对可以通过当前编译环境进行调用的成员或字段的引用。

应当用于描述类型或类型成员。

得以描述属性。

上述表格具体说明见“MicrosoftVisualStudio.NET2003文档“之“VisualStudio.NET\VisualBasic和VisualC#\参考\VisualC#语言\C#程序员参考\C#语言功能\XML文档\建议的文档注释标记”的目录。

例图如下:

4.在公用类库中的公用方法需要在一般方法的注释后添加作者、日期及修改记录信息,统一采用XML标签的格式加注,标签如下:

作者

建立日期

修必记录

修改作者

修改日期

修改理由

修改作者

修改日期

修改理由

修改作者

修改日期

修改理由

最后修改日期

5.一个代码文件如果是由一人编写,则此代码文件中的方法无需作者信息,非代码文件作者在此文件中添加方法时必须要添加作者、日期等注释,格式参考8.4。

6.修改任何方法,必须要添加修改记录的注释,格式参考8.4。

回目录

8.4代码行注释规范

1.如果处理某一个功能需要很多行代码实现,并且有很多逻辑结构块,类似此种代码应该在代码开始前添加注释,说明此块代码的处理思路及注意事项等

2.注释从新行增加,与代码开始处左对齐

3.双斜线与注释之间以空格分开

例如:

回目录

8.5变量注释规范

1.定义变量时需添加变量注释,用以说明变量的用途

2.class级变量应以三条斜线的形式注释

3.方法级的变量注释可以放在变量声明语句的后面,与前后行变量声明的注释左对齐,注释与代码间以Tab隔开。

例如:

回目录

九、其它规范

9.1编程风格

1.为了保持更好的阅读习惯,请不要把多个变量声明写在一行中,即一行只声明一个变量。

例如:

StringstrTest1,strTest2;

应写成:

StringstrTest1;

StringstrTest2;

2避免方法中有超过5个参数的情况。

如果超过了,则应使用struct来传递多个参数。

3为了更容易阅读,代码行请不要太长,最好的宽度是屏幕宽度(根据不同的显示分辩率其可见宽度也不同)。

请不要超过您正在使用的屏幕宽度。

(每行代码不要超过80个字符。

4除非在不完全的switch语句中否则不要使用goto语句。

注:

原则上不应使用goto语句,除非在能够大大减轻编码的复杂性,并不影响可读性的前提下才允许使用。

5在switch语句中总是要有default子句来显示信息

6代码缩进

1.一致的代码缩进风格,有利于代码的结构层次的表达,使代码更容易阅读和传阅

2.代码缩进请使用“TAB”键实现,讲不要使用空格,为保证在不同的机器上使代码缩进保持一致,特此规定C#的TAB键宽度为4个字符,设定界面如下(C#ToolsOption):

7界面排版

8方法参数多于8个时采用结构体或类方式传递

9操作符/运算符左右空一个半角空格

10所有块的{}号分别放置一行,并嵌套对齐,不要放在同一行上

回目录

9.2资源释放

所有外部资源都必须显式释放。

例如:

数据库连接对象、IO对象等。

回目录

9.3错误处理:

1.不要“捕捉了异常却什么也不做“。

如果隐藏了一个异常,你将永远不知道异常到底发生了没有。

2.发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。

3.只捕捉特定的异常,而不是一般的异常。

正确的做法:

不好:

回目录

9.4其他

1.一个方法只完成一个任务。

不要把多个任务组合到一个方法中,即使那些任务非常小。

2.使用C#或VB.NET的特有类型,而不是System命名空间中定义的别名类型。

3.别在程序中使用固定数值,用常量代替。

4.避免使用很多成员变量。

声明局部变量,并传递给方法。

不要在方法间共享成员变量。

如果在几个方法间共享一个成员变量,那就很难知道是哪个方法在什么时候修改了它的值。

5.别把成员变量声明为public或protected。

都声明为private而使用public/pr

展开阅读全文
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1