C#编程规范研发中心.docx
《C#编程规范研发中心.docx》由会员分享,可在线阅读,更多相关《C#编程规范研发中心.docx(14页珍藏版)》请在冰豆网上搜索。
![C#编程规范研发中心.docx](https://file1.bdocx.com/fileroot1/2023-1/28/de1a98b6-a94c-4149-8636-b8751a501763/de1a98b6-a94c-4149-8636-b8751a5017631.gif)
C#编程规范研发中心
C#编程规范
一、规范目的
1:
一个软件的生命周期中,80%的花费在于维护;合理的规范可以减少后期开发人员对代码的维护。
2:
编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。
为了执行规范,每个软件开发人员必须一致遵守编码规范;
3:
使用统一编码规范的主要原因,是使应用程序的结构和编码风格标准化,以便于阅读和理解这段代码;
4:
好的编码约定可使源代码严谨、可读性强且意义清楚,与其它语言约定相一致,并且尽可能的直观。
二、适用范围
研发中心全体.NET开发人员。
三、规范内容
3.1命名规范
变量,类等命名方式主要采用以下两种:
序号
名称
规范
实例
1
Pascal
所有单词第一个字母大写,其他字母小写
如:
HelloWorld。
此方式主要用于类,方法等命名
2
Camel
除了第一个单词,所有单词第一个字母大写,其他字母小写
如:
helloWorld。
此方式主要用于变量命名。
3
匈牙利命名法
所有命名加前缀
如btnXX,txtXX。
可用在界面上一些按钮,文本或变量的定义。
3.1.1变量命名规范
1:
变量和方法参数使用Camel大小写形式
如:
publicclassHelloWorld
{
inttotalCount=0;
voidSayHello(stringname)
{
stringfullMessage="Hello"+name;
...
}
}
2:
不要使用匈牙利方法来命名变量。
即采用“_”或“X_”做为前缀,例如:
stringm_sName;Object_obj;等。
所有变量均采用camel大小写形式。
3:
不要用“_”或“&”等特殊字符作为第一个字母;
4:
用有意义的,描述性的词语来命名变量。
项目中可商量是否统一采用中文拼音的首字母来做为变量或参数的命名。
3.1.2属性命名规范
1:
用名词或名词短语命名属性。
2:
用Pascal大写命名属性。
3.1.3方法命名规范
1:
如果方法返回一个成员变量的值,方法名一般为Get+成员变量名,如若返回的值是bool变量,一般以Is作为前缀。
另外,如果必要,考虑用属性来替代方法;
2:
如果方法修改一个成员变量的值,方法名一般为:
Set+成员变量名。
同上,考虑用属性来替代方法。
3:
用动词或动词短语命名方法。
4:
使用Pascal大写方式命名方法。
如下所示:
voidRemoveAll()
stringGetCharArray()
boolIsContain()
3.1.4类命名规范
1:
用名词或名词短语命名类
2:
使用Pascal大写。
3:
不要使用任何类前缀以及不要使用带下划线的字符。
4:
泛型类型参数的命名:
命名要为T或者以T开头的描述性名字,例如:
publicclassList
publicclassMyClass
5:
对同一项目的不同命名空间中的类,命名避免重复,避免引用时的冲突和混淆。
6:
自定将异常类使用Exception作为后缀,如MyException。
3.1.5接口命名规范
1:
所有接口命名都以I做为开头,以表示这个类型是一个接口。
2:
使用名词或名词短语,或者描述行为的形容词来命名接口。
3:
使用Pascal大写。
同时I不算在内。
如:
IComponent(描述性名词),ICustomAttributeProvider(名词短语),和IPersistable(形容词)
4:
不要在任何地方使用带下划线或其经特殊的字符。
3.1.6事件命名规范
1:
定义为事件的委托,使用EventHandler做为后缀。
如
publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);
2:
考虑使用动词命名事件。
3:
使用Pascal命名,不要使用任何前缀或后缀。
例如,使用Close,而不要使用OnClose。
4:
通常情况下,对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为OnXxx)。
如:
PublicvirtualvoidOnClose()
{
If(Close!
=null)
{
Close();
}
}
3.1.7常量命名规范
所有单词大写,多个单词之间用"_"隔开。
如
publicconststringPAGE_TITLE="Welcome";
3.1.8静态字段命名规范
1:
使用Pascal大小写
2:
对静态字段名称使用匈牙利语表示法加前缀。
一般可采用“_”做为前缀。
3:
使用名词、名词短语或者名词的缩写命名静态字段。
3.1.9项目和程序集命名
采用 公司简称+项目名+模块名(可选)命名方式。
3.2代码注释规范
3.2.1代码注释约定
所有的方法和函数都应该以描述这段代码功能的简明注释开始(方法是干什么)。
但这种描述不应该包括执行过程细节(它是怎么做的),因为这常常是随时间而变的,而且这种描述会导致不必要的注释维护工作,甚至更糟—成为错误的注释。
因此只需要简单描述此段代码的基本功能即可
另外当参数的功能不明显且当过程希望参数在一个特定的范围内时,也应描述传递给过程的参数。
被过程改变的函数返回值和全局变量,特别是通过引用参数的那些,也必须在每个过程的起始处描述它们。
3.2.2模块头部注释规范
以一个物理文件为单元的都需要有模块头部注释规范,例如:
C#中的.cs文件
用于每个模块开头的说明,主要包括:
序号
名称
选择
描述
1
文件名称
必选
此文件的名称
2
功能描述
必选
此模块的功能描述与大概流程说明
3
作者
必选
当前文档编写者
4
日期
必选
当前文档创建日期
5
参考文档
可选
该档所对应的分析文档,设计文档。
6
引用
可选
开发的系统中引用其它系统的Dll、对象时,要列出其对应的出处,是否与系统有关﹙不清楚的可以不写﹚,以方便后期维护。
7
修改记录
后期开发必选
若在后期或二次开中档案的功能改变,则需要有修改人员的名字、修改日期及修改理由。
8
数据表
可选
所用到的数据表,视图,存储过程的说明,如关系比较复杂,则应说明哪些是可擦写的,哪些表为只读的。
如下例所示
实例:
/*************************************************************
*文件名:
ICycleEngine.CS
*基本功能:
在后台线程中进行间隔循环的引擎接口
*作者:
HCB
*日期:
2013年8月5日
*修改记录
*修改日期
*修改人:
*修改理由:
**************************************************************/
namespaceESBasic.Threading.Engines
///
///ICycleEngine在后台线程中进行间隔循环的引擎接口
///HCB2013年8月5日
///
publicinterfaceIcycleEngine
3.2.3类属性注释规范
在类的属性必须以以下格式编写属性注释:
///
///属性说明
///
3.2.4方法注释规范
1:
使用C#提供的机制。
即包含XML文本的特殊注释语法为方法进行注释。
在进行注释时,对所有参数以及返回值都要进行简要说明。
只要在方法头敲“///”三个斜杠系统自动生成基本如下所示的XML标签格式的注释:
///
///说明:
<对该方法的说明>
///
///"><参数说明>
///
///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>
///
2:
对于公共类的方法,在后期开发或维护当中需要进行修改时,必须对修改人,修改日期,修改理由进行说明。
3:
所有的方法必须在其定义前增加方法注释。
4:
方法注释的XML文档中所有标签节点说明如下:
标签
用法
作用
c>text
text希望将其指示为代码的文本。
为您提供了一种将说明中的文本标记为代码的方法。
使用将多行指示为代码
content
content段落文本。
用于诸如或等标记内,使您得以将结构添加到文本中。
description
name为方法参数名。
将此名称用单引号括起来('')。
应当用于方法声明的注释中,以描述方法的一个参数。
name
要引用的参数名。
将此名称用双引号括起来("")。
标记为您提供了一种指示词为参数的方法。
可以处理XML文件,从而用某种独特的方法格式化该参数。
cref="member"对可以通过当前编译环境进行调用的成员或字段的引用。
编译器检查到给定代码元素存在后,将member传递给输出XML中的元素名。
必须将member括在双引号("")中。
使您得以从文本内指定链接。
使用指示希望在“请参阅”一节中出现的文本。
cref="member"对可以通过当前编译环境进行调用的成员或字段的引用。
编译器检查到给定代码元素存在后,将member传递给输出XML中的元素名。
必须将member括在双引号("")中
使您得以指定希望在“请参阅”一节中出现的文本。
使用从文本
description
description
代码示例的说明。
使用标记可以指定使用方法或其他库成员的示例。
一般情况下,这将涉及到标记的使用。
content
content为希望将其标记为代码的文本。
记为您提供了一种将多行指示为代码的方法。
使用指示应将说明中的文本标记为代码
description
应当用于描述类型成员。
使用以提供有关类型本身的信息。
此处description为对象的摘要。
description
cref="member"对可从当前编译环境中获取的异常的引用。
编译器检查到给定异常存在后,将member转换为输出XML中的规范化元素名。
必须将member括在双引号("")中。
description说明。
标记使您可以指定类能够引发的异常。
filename包含文档的文件名。
该文件名可用路径加以限定。
将filename括在单引号中('')。
Tagpath:
filename中指向标记名的标记路径。
将此路径括在单引号中('')。
name注释前边的标记中的名称说明符;名称具有一个id。
id
位于注释之前的标记的id。
将此id括在双引号中("")。
标记使您得以引用描述源代码中类型和成员的另一文件中的注释。
这是除了将文档注释直接置于源代码文件中之外的另一种可选方法。
标记使用XMLXPath语法。
有关自定义使用的方法,请参阅XPath文档。
term
description
term
description
term定义的项,该项将在text中定义。
description目符号列表或编号列表中的项或者term的定义。
块用于定义表或定义列表中的标题行。
定义表时,只需为标题中的项提供一个项。
列表中的每一项用- 块指定。
创建定义列表时,既需要指定term也需要指定text。
但是,对于表、项目符号列表或编号列表,只需为text提供一个项。
列表或表所拥有的- 块数可以根据需要而定。
标记使您得以将成员的访问记入文档。
System.Security.PermissionSet使您得以指定对成员的访问。
>
cref="member">description
cref="member"对可以通过当前编译环境进行调用的成员或字段的引用。
编译器检查到给定代码元素存在后,将member转换为输出XML中的规范化元素名。
必须将member括在双引号("")中。
description成员的访问的说明。
description
description成员的说明。
标记是可以指定有关类或其他类型的概述信息的位置。
是可以描述该类型的成员的位置。
description
description返回值的说明。
标记应当用于方法声明的注释,以描述返回值。
property-description
property-description属性的说明。
标记使您得以描述属性。
请注意,当在VisualStudio.NET开发环境中通过代码向导添加属性时,它将会为新属性添加标记。
然后,应该手动添加标记以描述该属性所表示的值。
3.2.5代码行注释规范
代码间注释分为单行注释和多行注释:
单行注释样式:
//<单行注释>
多行注释如下所示:
/*************************************************************
*
*功能说明
*
**************************************************************/
3.3其它规范
3.3.1基本变量定义前缘缩写规则
序号
名称
缩写
实例
1
bool
bln
blnAction
2
byte
byt
bytData
3
sbyte
sbyt
sbytData
4
char
chr
chrFirst
5
decimal
dec
decNum
6
double
dbl
dblNum
7
float
flt
fltCount
8
long
lng
lngLength
9
ulong
ulng
ulngLength
10
short
sht
shtHeight
11
ushort
usht
ushtHeight
12
string
str
strName
13
DateTime
dtm
dtmFixedTime
14
object
obj
objLock
15
Array
ary
aryDatas
16
List
lst
lstDatas
3.3.2WinFrom主要控件命名前缘缩写
序号
名称
缩写
控件说明
1
Label
lbl
标签
2
Button
byt
按钮
3
TextBox
txt
输入框
4
LinkButton
lnkbtn
超链接按钮
5
LinkLabel
lnklbl
超链接标签
6
Image
img
图片基类
7
CheckBox
chk
多选框
8
RadioButton
rbtn
单选框
9
GroupBox
gbx
组合框
10
PictureBox
pic
图片框
11
Panel
pnl
容器
12
ComboBox
cbo
组合框
13
ListView
lstv
列表视图
14
TreeView
trv
树视图
15
Timer
tmr
定时器控件
16
ImageList
imglst
17
ToolTip
tlp
提示控件
18
ContextMenu
mnu
右键菜单
19
ToolBar
tlb
工具栏
20
StatusBar
stb
状态栏
21
RichTextBox
rtxt
文本框
22
TabControl
tab
切页控件
3.3.3WebFrom主要控件命名前缘缩写
序号
名称
缩写
控件说明
1
Label
lbl
标签
2
Button
byt
按钮
3
TextBox
txt
输入框
4
LinkButton
lnkbtn
超链接按钮
5
ImageButton
imgbtn
6
HyperLink
7
DropDownList
ddl
8
ListBox
lst
9
DataGrid
dgrp
10
DataList
dlst
11
Repeater
rpt
12
CheckBox
chk
13
CheckBoxList
chkl
14
RadioButtonList
rdol
15
RadioButton
rdo
16
Image
img
17
Panel
pnl
18
PlaceHolder
plh
19
Calendar
cal
日历控件
20
Table
tbl
21
RequireFieldValidator
valr
3.3.3ADO.NET主要对象命名前缘缩写
序号
名称
缩写
控件说明
1
Connection
con
数据库连接对象
2
Command
cmd
Sql语句执行对象
3
DataAdapter
adp
4
DataReader
dtr
5
DataSet
ds
6
DataTable
dtbl
7
DataRow
dr
8
DataColumn
dc
9
DataView
dv
.