编程规范和范例cle.docx
《编程规范和范例cle.docx》由会员分享,可在线阅读,更多相关《编程规范和范例cle.docx(29页珍藏版)》请在冰豆网上搜索。
![编程规范和范例cle.docx](https://file1.bdocx.com/fileroot1/2023-1/7/9eb9860d-eb8e-4363-85ce-eeeca8a7da05/9eb9860d-eb8e-4363-85ce-eeeca8a7da051.gif)
编程规范和范例cle
**系统
-编码命名规范
版本0.1
文档类别:
项目管理
文档名称:
《**系统-编码命名规范》
文档标识:
版本:
0.1
状态:
讨论稿
访问路径:
\\File\vss
所有者:
cle
创建人/创建时间:
cle/2004-12-21
批准人/批准时间:
修订历史:
日期
说明
作者
版本
2004-12-21
C#开发和数据库设计的命名规范和约定
命名的缩写规范
陈利娥
1.0
2004-12-25
增加控件命名规范
补充HTML编码规范
2005-11-4
.NETFramework常规参考命名指南
陈利娥
1.1
2007-10-6
.NETFramework常规参考类库开发人员设计指南
陈利娥
2.0
目录
一、数据库设计命名规范5
数据库名5
表名5
视图名5
触发器名5
存储过程名6
变量名6
命名中其他注意事项6
二、文件名命名规范6
三、C#开发命名规范6
命名空间的定义6
类7
接口7
枚举和结构8
委派类型,或者叫代理类型8
命名规则8
方法9
属性9
常数9
变量10
注释10
控件11
四、缩写规范12
数据库名和表名12
其他动名词缩写13
五、C#编码习惯.14
2、代码的缩进.要用Tab,而不要用space.14
3、尽量不要手工更改机器生成的代码,若必须更改,一定要改成和机器生成的代码风格一样..14
4、不准使用goto系列语句.14
5、不要声明public的event,应用事件访问器.14
6、类型转换的使用规则.15
7、生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string.15
8、号"{"要新起一行.15
9、用"{}"包含if下的语句,即使只有一条语句.15
10、switch语句一定要有default来处理意外情况.15
11、尽量少使用三目运算符?
:
,而要使用if语句.15
12、尽量不用使用this引用,除非是要调用类中的另一个Constructor.15
六、通用界面规范16
1、遵循一致的准则,确立标准并遵循16
2、(Color)颜色使用恰当,遵循对比原则:
16
3、(Resource)资源17
4、(Font)字体17
5、(Text)文字表达18
6、(STYLE)控件风格,不要使用错误控件,控件功能要专一18
7、(ALIGN)控件布局,窗口不拥挤,按功能组合控件18
8、(TABORDER)TAB顺序19
9、(ShortcutKey&Accelerator&PopMenu)快捷键、加速键和弹出菜单19
10、(ACTION)用户交互20
11、(HELP)联机帮助:
20
12、发行时阐明规则20
七、高开发效率的快捷键21
八、HTML编码规范21
标记的书写22
标记的换行规范22
标记的关闭规范:
22
标记的属性值规范23
标记的缩进规范23
注释24
九、NETFramework常规参考类库开发人员设计指南24
一、数据库设计命名规范
数据库名
✧数据库名:
如:
JBNET
表名
✧表名必须以名词或名词短语命名,首位大写,同时要使用复数形式,比如:
⏹学生基本信息表:
Students
⏹客户基本信息表:
Customers
✧如果是关联表,结尾用Ref表示,关联的实体名称都要列出,这时不用使用复数形式,但每个实体名的首位大写,不要使用下划线,比如:
⏹代理商和客户关联表:
AgentCustomerRef
✧命名应尽量反映存储的数据内容。
视图名
✧视图以v作为前缀,其他命名规则和表的命名类似,比如:
⏹代理商基本信息视图:
vAgents
✧命名应尽量体现各视图的功能。
触发器名
触发器名为相应的表名加上后缀,Insert触发器加'_i',Delete触发器加'_d',Update触发器加'_u',如:
Customer_i,Customer_d,Customer_u。
存储过程名
存储过程应以'up_'开头,和系统的存储过程区分,后续部分主要以动宾形式构成,并用下划线分割各个组成部分。
如增加代理商的帐户的存储过程为'up_ins_agent_account'。
变量名
变量名采用小写,若属于词组形式,用下划线分隔每个单词,如@my_err_no。
命名中其他注意事项
✧以上命名都不得超过30个字符的系统限制。
✧变量名的长度限制为29(不包括标识字符@)。
✧数据对象、变量的命名都采用英文字符。
禁止使用中文命名。
二、文件名命名规范
文件名要能反应类的内容,最好是和类同名,一个文件中一个类或一组关连类.
目录结构中要反应出namespace的层次
三、C#开发命名规范
命名空间的定义
✧用有意义的名字命名namespace,如:
产品名、公司名.
✧命名空间必须以名词命名,并按照功能分组,以体现此命名空间的功能,比如:
namespaceBSS.AccountSys//帐务系统
namespaceBSS.Entities;//实体类
✧把引用的系统的namespace和自定义或第三方的用一个换行把它们分开.
✧用C#预定义的类名,而不要用别名.
stringuserName;而不是System.StringuserName;
intnumber;而不是System.Int32;
类
✧以Class声明的类,都必须以名词或名词短语命名,体现类的作用。
如:
ClassIndicator
如果通过objectbuilder工具从数据库导出的实体类,使用和表名或视图名相同的名字,如果是视图去掉前面的v,同时使用单数形式,去掉最后的s,如:
从表Customers导出类Customer,从视图vAgents导出类Agent。
✧当类是一个特性(Attribute)时,以Attribute结尾,自定义的属性以Attribute结尾
publicclassAuthorAttribute:
Attribute
{
}
classColorSetException
✧当类是一个异常(Exception)时,以Exception结尾,自定义的异常以Exception结尾,比如:
publicclassAppException:
Exception
{
}
classCauseExceptionAttribute
✧当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如
classScreenClass
classSystemClass
✧当类只用于作为其他类的基类,根据情况,以Base结尾:
MustInheritClassIndicatorBase
✧如果定义的类为抽象类,请使用"Abstract"前缀,比如:
abstractclassAbstractBuilder
✧如果定义的类是一个窗体,那么名字的后面必须加后缀Form,如果是Web窗体,必须加后缀Page:
ClassPrintForm:
InheritsForm‘*Windows窗体
ClassStartPage:
InheritsPage‘*Web窗体
✧如果定义的类使用了某些模式,请遵循类名+模式名的规则,比如:
工厂模式:
classBuilderFactory
中介者:
classOrderBroker
观察者:
classAccountObserver
等等。
接口
✧接口命名,请遵循COM命名规则:
接口必须要由I作为前缀,并用形容词或者名词命名,突出表现实现接口的类将具有什么能力或者角色,比如:
interfaceISortable:
实现此接口的类可排序,一目了然。
interfaceIDownloadManager:
实现此接口的类可以作为下载管理者使用。
✧如果要扩展接口,请使用新接口继承原接口,并在后面加2代表是一个扩展接口(不要直接修改原接口,会影响到现有客户的使用),
比如:
interfaceIObjectFactory
{
objectCreateInstance(Typetype);
}
interfaceIObjectFactory2:
IObjectFactory
{
boolCheckSecurity(Securitysecurity);
}
枚举和结构
✧同样必须以名词或名词短语命名。
最好体现枚举或结构的特点,如:
EnumColorButtons‘以复数结尾,表明这是一个枚举
StructureCustomerInfoRecord‘以Record结尾,表明这是一个结构体
委派类型,或者叫代理类型
✧普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能:
DelegatevoidDataSeeker(outstringSeekString);
✧用于事件处理的委派类型,必须以EventHandler结尾,如:
DelegatevoidDataChangedEventHandler(objectsender,DataChangedEventArgse);
6、上述所有规则的共同特点是:
每个组成名称的词语都必须是大写开头,禁止完全大写或小写的名称。
命名规则
1.用pascal规则来命名方法和类型.
publicclassTextBox
{
publicvoidDataBind()
{
}
}
2.用camel规则来命名局部变量和方法的参数.
stringuserName;
publicAddUser(stringuserId,byte[]password);
方法
✧方法都必须以动词或动词短语命名。
方法的命名.一般将其命名为动宾短语.比如:
boolOpenDocument(Documentdoc);
voidPrint(Documentdoc);
ShowDialog()
CreateFile()
GetPath()
属性
✧原则上,字段(Field)是不能公开的,要访问字段的值,一般使用属性。
属性以简洁清晰的名词命名:
publicstringCustName{}
publicObjectCurrent{}
事件
事件是特殊的属性,只能在事件处理上下文中使用。
命名的原则一般是动词或动词的分词,通过时态表明事件发生的时间:
ClickEventHandlerEventClick;
ColorChangedEventHanglerEventColorChanged;
常数
✧文字常量和数字常量不要硬编码,应该用常量类或枚举代替.
✧常数以表明常数意义的名词命名,一般不区分常数的类型:
constfloatPI=3.1415;
✧在严格要求的代码中,常数以c_开头,如c_DefaultConcentration,但最好不要用它,它会带来输入困难。
变量
✧所有的成员变量前加前缀_
publicclassDatabase
{
privatestring_connectionString;
}
✧所有的成员变量声明在类的顶端,用一个换行把它和方法分开
✧不要声明public和protected的成员变量,应用property.
✧建议局部变量在最接近使用它时再声明.
✧局部变量的名称要有意义.不可使用简称和无意义的名称诸如A,x1,x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n).下面给出了良好的例子:
intPosition;
stringCstomerName;
✧特殊情况可以考虑一个字母的变量:
Graphicg;
✧多个词的变量每个词首字母应该大写;
✧不能起太长的名字,应该尽量简洁,如下面的例子:
stringVariableUsedToStoreSystemInformation;//错误,太复杂了
stringSystemInformation;//正确,简单明了
stringSysInfo;//错误,过于简单
✧两个或者多个词组合的变量名过长时,可考虑使用缩写:
ListCorporationCustomerList;
可缩写为:
ListCorpCustList;
✧对于控件,应该指明控件的类型:
ButtonBtnNextPage;
DialogDlgOpenFile;
✧使用某个控件的值时,尽量命名局部变量.
注释
关键的语句(包括声明关键的变量)必须要写注释.
注释的规则繁多,这里仅提到其中一点:
正常的注释以/**/注视片断,单独的//注释单行,只用来注释暂时不用的代码,这样能够方便的采用代码注释工具控制代码的使用。
注释快捷键:
Ctrl+k+C
取消注释:
Ctrl+k+u
控件
控件类型
前缀
例子
CheckBox
chk
chkReadOnly
ComboBox
cbo
cboUser
CommandButton
cmd
cmdExit
CommonDialog
dlg
dlgFileOpen
Communications
com
comFax
CSCalendar
csc
cscCal2
DataControl
dat
datBiblio
Data-BoundComboBox
dbc
dbcLanguage
Data-BoundGrid
dbg
Data-BoundListBox
dbl
DirectoryListBox
dir
DriveListBox
drv
Drop-DownListBox
ddl
FileListBox
fil
Form
frm
Frame
fra
Grid
grd
HorizontalScrollBar
hsb
Image
img
ImDate
imd
ImFrame3D
imf
ImMask
imm
ImNumber
imn
ImText
imx
ImTime
imt
InputDate
ymd
Lable
lbl
Line
lin
ListBox
lst
ListView
lvw
MaskEdBox
med
MDIChildForm
mdi
Menu
mnu
MSFlexGrid
msg
MSTab
mst
OLE
ole
OLECTRAChart
och
OptionButton
opt
Picture
pic
ProgressBar
pgb
Report
rpt
RichTextBox
rtf
Shape
shp
Spin
spn
Spread
spr
Slider
sld
SSCommand
cmd
SSPanel
pnl
SSTab
sst
StatusBar
stb
TabStrip
tab
TextBox
txt
Timer
tmr
TreeView
tre
ToolBar
tlb
VBReport
vrp
VerticalScrollBar
vsb
四、缩写规范
注:
希望大家收集我们系统的可以需要缩写的词汇,以下作为参考,请大家先将自己的意见发送给cle,得到确认并加入缩写规范后方可使用
数据库名和表名
帐户:
acct
客户:
cust
代理商:
agt
产品包:
prodpkg
产品:
prod
服务:
svc
实名:
cns
排名:
kw
关键词资源:
kwrsc
操作员:
oper
用户名:
usrnm
密码:
pwd
报表:
rpt
会话:
session
其他动名词缩写
名词:
实时(帐户):
rt
预付款:
pp
金额:
amt
余额:
bal
信用额度:
credit
价格:
price
竞价价格:
bidprice
点击:
clk
排名名次:
pos
编号:
id
编码:
cd
名词后缀:
明细:
item
详情:
dtl
信息:
info
记录:
rec
状态:
st
动词:
统计:
stat
竞价:
bid
转帐:
trans
收费:
charge
付款:
pay
入帐:
deposit
改变:
chg
获取:
get
删除:
del
插入:
ins
查询:
qry
修改:
upd
检查:
chk
分配:
alloc
审核:
aprv(approve)
终止审核:
stopaprv
暂停审核(睡眠)pauseaprv
恢复审核(唤醒)resumeaprv
形容词:
每日的:
daily
每月的:
monthly
每年的:
annually
五、C#编码习惯.
1、一行不要超过80个字符.
2、代码的缩进.要用Tab,而不要用space.
3、尽量不要手工更改机器生成的代码,若必须更改,一定要改成和机器生成的代码风格一样..
4、不准使用goto系列语句.
5、不要声明public的event,应用事件访问器.
publicclassSource
{
privateEventHandlerm_NumberChangeEvent;
publiceventEventHandlerNumberChangeEvent
{
add
{
m_NumberChangeEvent+=value;
}
remove
{
m_NumberChangeEvent-=value;
}
}
}
6、类型转换的使用规则.
Animalanimal=newDog();
Dogdog=animalasDog;
if(dog!
=null)
{
}
7、生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string.
8、号"{"要新起一行.
publicclassAuthorAttribute:
Attribute
{
}
9、用"{}"包含if下的语句,即使只有一条语句.
10、switch语句一定要有default来处理意外情况.
11、尽量少使用三目运算符?
:
,而要使用if语句.
12、尽量不用使用this引用,除非是要调用类中的另一个Constructor.
publicclassPerson
{
publicPerson(stringname)
{
}
publicPerson():
this("Jim")
{
}
}
六、通用界面规范
1、遵循一致的准则,确立标准并遵循
无论是控件使用,提示信息措辞,还是颜色、窗口布局风格,遵循统一的标准,做到真正的一致。
这样得到的好处:
1:
使用户使用起来能够建立起精确的心里模型,使用熟练了一个界面后,切换到另外一个界面能够很轻松的推测出各种功能,语句理解也不需要费神理解
2:
降低培训、支持成本,支持人员不会行费力逐个指导。
3:
给用户统一感觉,不觉得混乱,心情愉快,支持度增加
做法:
项目组有经验人士,确立UI规范:
·美工提供色调配色方案,提供整体配色表
·界面控制程序人员、用户体验人员提出合理统一使用的控件库。
参考标准界面使用规范:
控件功能遵循行业标准,windows平台参见《Microsoft用户体验》(MSDN中有,中文已经翻译发行,项目组必须有一本)
控件样式在允许的范围内可以统一修改其样式、色调
参考其他软件先进操作,提取对本项目有用的功能,以使用,绝对不能盲从,漫无目的。
根据需要,设计特殊操作控件,准则为:
简化操作、达到一定功能目的
·界面实施人员与美工商榷控件可实现性,(如不实行此步骤,将会导致各自对对方工作不满意,也会产生不一致的混乱)。
重复叠代上述工作。
·建立合理化文档《UI标准》描述上述规范,
·强行界面设计者理解之,并作为开发准则,
·SQA人员进行监控开发人员是否遵循,及时告诫开发人员。
2、(Color)颜色使用恰当,遵循对比原则:
1:
统一色调,针对软件类型以及用户工作环境选择恰当色调:
如:
安全软件,根据工业标准,可以选取黄色,绿色体现环保,蓝色表现时尚、紫色表现浪漫等等,淡色可以使人舒适,暗色做背景使人不觉得累等
2:
如果没有自己的系列界面,采用标准界面则可以少考虑此方面,做到与操作系统统一,读取系统标准色表
3:
色盲、色弱用户,即使使用了特殊颜色表示重点或者特别的东西,也应该使用特殊指示符,?
quot;!
,?
着重号,以及图标等
4:
颜色方案也需要测试,常常由于显示器、显卡的问题,色彩表现每台机器都不一样,应该经过严格测试,不同机器进行颜色测试
5:
遵循对比原则:
在浅色背景上使用深色文字,深色背景上使用浅色文字,蓝色文字以白色背景容易识别,而在红色背景则不易分辨,原因是红色和蓝色没有足够反差,而蓝色和白色反差很大。
除非特殊场合,杜绝使用对比强烈,让人产生憎恶感的颜色。
6:
整个界面色彩尽量少的使用类别不同的颜色
itop色表
具体标准参考美术学统计学术标准。
色表的建设,对于美工在图案设计、包装设计上起着标准参考作用,对于程序界面设计人员设计控件、窗体调色起到有章可循的作用。
3、(Resource)资源
一个多姿多彩的人机交互界面,少不了精美的鼠标光标、图标以及指示图片、底图等。
1:
也需要遵循统一的规则,包括上述颜色表的建立,图标的建立步骤也应该尽可能的形成标准,参考itop的outlookbar图标设计标准
2:
有标准的图标风格设计,有统一的构图布局,有统一的色调、对比度、色阶,以及图片风格
3:
底图应该融于底图,使用浅色,低对比,尽量少的使用颜色。
4:
图标、图像应该很清晰的表达出意思,遵循常用标准,或者用户机器容易联想的到物件,绝对不允许画出默认奇妙的图案。
5:
鼠标光标样式统一,尽量使用系统标准,杜绝出现重复的情况,例如某些软件中一个手的形状就有4钟不同的样子。
如:
《如何创建XP图标》
附件:
Ito