PowerBuild编程规范.docx
- 文档编号:25453857
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:33
- 大小:30.93KB
PowerBuild编程规范.docx
《PowerBuild编程规范.docx》由会员分享,可在线阅读,更多相关《PowerBuild编程规范.docx(33页珍藏版)》请在冰豆网上搜索。
PowerBuild编程规范
文档编号:
IE–HIS组–PowerBuilder开发设计规范-V1.0
PowerBuilder开发设计规范
关于本文档
主题
PowerBuilder编程规范
说 明
PowerBuilder编程规范
适用对象
项目负责人、软件设计师、软件开发工程师、相关组
修订历史
版本
章节
类型
日期
作者
说明
说明:
版本-1.0、2.0、3.0。
。
。
每个版本后可加修改序号01、02。
。
。
;
类型-创建(C)、修改(U)、删除(D)增加(A);
目录
1.前言4
1.1编写目的4
1.2遵循标准4
1.3术语和缩写词4
1.4必要性5
2.编码规范5
2.1命名规范5
2.1.1系统命名约定5
2.1.2函数命名约定8
2.1.3控件命名约定9
2.1.4数据窗口命名约定13
2.2主体代码约束14
2.2.1常用语法14
2.2.2代码行数约定15
2.2.3注释16
2.2.4对象存放约定17
2.2.5引用与继承18
2.3DataWindow选项18
2.3.1数据写入约定18
2.3.2Update属性19
2.3.3界面元素19
2.3.4状态保护19
2.4PFC编程20
2.4.1PFC结构20
3.UK框架层20
3.1框架层结构20
3.2常用事件及简码22
4.PowerBuilder编程技巧33
4.1DataWindow修改风格33
4.2DLL动态链接库开发33
4.3WebServices接口开发33
5.保持一致性34
1.前言
1.1编写目的
本规范适用基于PowerBuilder软件进行项目开发工作。
适用对象为开发编码人员、UI设计人员、模版编写人员、界面测试人员等。
1.2遵循标准
[列出本项目的软件开发规范等。
]
1.3术语和缩写词
PFCPowerBuilderFoundationClass
1.4必要性
以标准的方式,提交技术协作的水平。
旨在改变以往反复修改、重复劳动、效率低下的现象。
降低开发周期,提高代码质量,提高工作效率。
2.编码规范
2.1命名规范
2.1.1系统命名约定
模块编码
模块名称
模块命名
系统名称
UM01
系统档案
U_ukum0101
系统维护
UM06
权限管理
U_ukum0601
UM07
初始化及参数
U_ukum07--
UM09
日志管理
U_ukum09--
UM10
系统参数
U_ukum10--
UM02
门急诊挂号
U_ukum02--
门诊系统
UM03
门急诊收费
U_ukum03--
UM04
门诊药房
U_ukum04--
UM70
门诊医生工作站
U_ukum70--
UM05
药品管理
U_ukum05--
库房系统
UM30
设备管理
U_ukum30--
UM31
物资供应管理
U_ukum31--
UM32
卫生材料管理
U_ukum32--
UM11
住院登记
U_ukum11--
住院系统
UM12
住院收费
U_ukum12--
UM13
护士工作站
U_ukum13--
UM14
住院医生工作站
U_ukum14--
UM15
住院药局
U_ukum15--
UM16
实验室信息系统
U_ukum16--
医技系统
UM17
超声内镜病理信息
U_ukum17--
UM18
手术麻醉管理系统
U_ukum18--
UM23
报表系统
U_ukum23--
报表系统
UM22
经济核算
U_ukum22--
UM20
药品报表
U_ukum20--
UM21
院长查询
U_ukum21--
院长查询
UM25
财务分析
U_ukum25--
UM40
财务查询
U_ukum40--
UM42
病人查询
U_ukum42--
病人查询
UM19
首页管理
U_ukum19--
病案系统
UM43
门诊管理
U_ukum43--
UM44
病房管理
U_ukum44--
UM45
病案流通
U_ukum45--
UM50
院感传染病管理
U_ukum50--
院感系统
UM71
农合系统
U_ukum71--
医保系统
UM73
体检保健系统
U_ukum73--
体检系统
Uk100
新版住院医生站
U_uk10001
新住院医生站
Uk101
新版护士站
U_uk10101
新住院护士站
Uk103
新药品管理
U_uk103--
新药品管理
Uk1--
新增的系统
U_uk1----
2013新版程序开始新增的系统从uk100向下顺延,模块命名以u_+‘模块编码’命名
例:
U_uk10001
2012版系统模块命名以u_uk+‘模块编码’命名系统变量命名约定例:
U_ukum0101
数据类型:
a:
any
bb:
blob
b:
boolean
c:
char
d:
date
dt:
datetime
dec:
decimal
db:
double
i:
integer
l:
long
r:
real
s:
string
t:
time
ui:
unsignedint
ul:
unsignedlong
2.1.1.1全局变量
全局变量长度不超过16位
全局变量开始固定为小写“g”+数据类型+“_”,构成:
“g”+数据类型+“_”+自定义名称(小写)
如booleangb_yesno
2.1.1.2实例变量
实例变量长度不超过16位
实例变量开始固定为小写“i”+数据类型+“_”,构成:
“g”+数据类型+“_”+自定义名称(小写)
如booleanib_yesno
2.1.1.3局部变量
局部变量长度不超过16位
实例变量开始固定为小写“l”+数据类型+“_”,构成:
“l”+数据类型+“_”+自定义名称(小写)
如booleanlb_yesno
2.1.2函数命名约定
2.1.2.1公用函数
1.公用函数的命名规则为:
“f_”+功能信息
2.例如:
f_getwindir,f_getpatientinformation
2.1.2.2对象内函数
3.“of_”+‘uk’+自定义名称(小写)
2.1.2.3参数
4.参数前面加上一个前辍字母“a”+数据类型+“_”+自定义名称(小写),根据该参数的目的来命名。
5.functionf_PatientInformation(stringas_caseid);得到病历号,
输入参数:
病历号。
2.1.3控件命名约定
控件类型的名称作为命名的前缀(小写),用PB缺省命字方式。
PrefixDescription
AppApplication
AbArrayBounds
CbxCheckBox
CbCommandButton
CdClassDefinition
CdoClassDefinitionObject
CnConnection
CninfoConnectionInfo
CnoConnectObject
CxkContextKeyword
CxinfoContextInformation
Cppcplusplus
DsDataStore
DwDataWindow
DwcDataWindowChild
DrgDragObject
DrwDrawObject
DdplbDropDownPictureListBox
DdlbDropDownListBox
DwoDWobject
DdaDynamicDescriptionArea
DsaDynamicStagingArea
EdEnumerationDefinition
EidEnumerationItemDefinition
EmEditMask
EnvEnvironment
ErrError
ExtExtObject
GrGraph
GoGraphicObject
GraxGrAxis
GrdaGrDispAttr
GbGroupBox
HsbHorizontalScrollBar
InetInet
IrInternetResult
LnLine
LbListBox
LvListView
LviListViewItem
MfdMailFileDescription
MmMailMessage
MrMailRecipient
MsMailSession
MdiMDIClient
MMenu
McMenuCascade
MsgMessage
MleMultiLineEdit
NvNonVisualObject
OcOleControl
OoOleObject
OstgOleStorage
OmcOmControl
OmccOmCustomControl
OmecOmEmbeddedControl
OmoOmObject
OmstmOmStream
OmstgOmStorage
OvalOval
PPicture
PbPictureButton
PbcppPBToCPPObject
PlbPictureListBox
PlPipeline
PoPowerObject
ProcallProfileCall
ProclassProfileClass
ProlnProfileLine
PrortProfileRoutine
ProProfiling
RbRadioButton
RecRectangle
RemRemoteObject
RteRichTextEdit
RrecRoundRectangle
RteoRteObject
ScrdScriptDefinition
SleSingleLineEdit
SrvService
StStaticText
StdSimpleTypeDefinition
StrStructure
TabTab
TabpgTabPage
TcanTraceActivityNode
TcbeTraceBeginEnd
TcerrTraceError
TcfTraceFile
TclnTraceLine
TcgcTraceGarbageCollect
TcoTraceObject
TcrtTraceRoutine
TcsqlTraceSQL
TctTraceTree
TctnTraceTreeNode
TcterrTraceTreeError
TctsqlTraceTreeSQL
TctgcTraceTreeGarbageCollect
TctlnTraceTreeLine
TctoTraceTreeObject
TctrtTraceTreeRoutine
TctuTraceTreeUser
TcuTraceUser
TdTypeDefinition
TrTransaction
TrpTransport
TvTreeView
TviTreeViewItem
UoUserObject
VrcdVariableCardinalityDefinition
VrdVariableDefinition
VsbVerticalScrollBar
WoWindowObject
WWindow
2.1.4数据窗口命名约定
2.1.4.1模块功能的主要数据窗口:
“d_”+模块标示+信息
如d_um0401sheet是药房药品入库单主数据窗口。
2.1.4.2打印的数据窗口:
“d_”+模块标示+“_print”或
“d_”+模块标示+“_qt”
如d_um0401_print是药房药品入库单打印数据窗口。
2.1.4.3用于DATASTORE的数据窗口:
“d_”+(模块标示或其他信息)+“_ds”
如d_um0401_ds是药房药品入库单所用的DATASTORE。
2.1.4.4用于辅助信息
“d_”+(模块标示或其他信息)+“_child”
如d_um0401_child是辅助信息显示药房药品入库单所用的数据窗口。
2.1.4.5用于总览的数据窗口
“d_”+(模块标示或其他信息)+“_select”
如d_um0401_child是显示药房药品入库单总览所用的数据窗口
2.2主体代码约束
⏹缩进请使用4个空白符的制表位。
代码折叠必须看起来是完整并且是合乎逻辑的。
2.2.1变量的声明
变量声明置于事件或函数的开始处,不要总是在第一次使用它们的地方做声明.
2.2.2常用语法
⏹普通代码段应该看起来如下:
dw_master.height=(st_info.y-dw_master.y)*0.8
dw_detail.y=dw_master.y+dw_master.height+10
⏹IF语句应该看起来像这样:
Ifds_temp.getitemnumber(1,'sheet_status')>2then
messagebox('系统提示','医嘱选择错误’)
return0
else
return1
endif
⏹FOR语句应该看起来像这样:
forll_i=1tothis.rowcount()
//dddd
next
⏹CHOOSECASE语句应该看起来像这样:
longll_row
CHOOSECASEdwo.name
CASE"order_class"
ifisvalid(inv_rapidinput)then
inv_rapidinput.ia_args[1]="YL"
endif
CASE"billing_attr"
ifisvalid(inv_rapidinput)then
inv_rapidinput.ia_args[1]="JJ"
endif
ENDCHOOSE
⏹单行的IF必须写在同一行,且只能有一行代码,不写ENDIF。
Ifthis.getrow()<1thenreturn1
2.2.3代码行数约定
每页中的代码不能多于200行,每行中的代码长度不能超过显示窗口的长度。
如需要请尽量换行。
换行
当一个表达式在一行中放置不下时,根据下面三个原则换行:
在顿号后换行;
在操作符前换行;
在较高级别中断,而不在低级别中断;
在表达式开始处与赋值符号对齐新行;
2.2.4注释
注明每个函数,事件的头部都应该描述该函数的名称、功能、作用范围、入口参数的类型和传值方式及参数含义、返回值类型及返回值的含义。
每个模块对象的properties属性中标明模块的名称。
普通代码的注释率不能少于20%,关键代码的注释率不能少于30%。
1、修改代码时,总是使代码周围的注释保持最新。
2、在每个例程的开始,提供标准的注释样本以指示例程的用途、假设和限制很有帮助。
注释样本应该是解释它为什么存在和可以做什么的简短介绍.
3、避免在代码行的末尾添加注释;行尾注释使代码更难阅读。
不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释在公共制表位处对齐。
4、在部署发布之前,移除所有临时或无关的注释,以避免在日后的维护工作中产生混乱。
5、如果需要用注释来解释复杂的代码节,请检查此代码以确定是否应该重写它。
尽一切可能不注释难以理解的代码,而应该重写它。
尽管一般不应该为了使代码更简单以便于人们使用而牺牲性能,但必须保持性能和可维护性之间的平衡。
6、在编写注释时使用完整的句子。
注释应该阐明代码,而不应该增加多义性。
例如
1.编译器忽略//后面的到行结束的内容。
在单行代码中增加一个描述和某种解释时使用。
例:
//fy2013-01-22注释作用
2.编译器忽略/*to*/之间的内容,在代码块之间增加注释时使用,表明开始处及结束处。
例:
/*fy2013-01-22注释作用begin*/
代码段
/*fy2013-01-22end*/
l对象注释
函数、事件注释
/*
功能Fy2013-01-02
入参说明
出参说明
*/
变量注释Stringls_paname,ls_sex//病人姓名,性别
l代码注释
2.2.5 对象存放约定
编号
模块名称
文件夹目录
各医院个性PBL
ukhisnew
Ukhis
pqdw.pbl
pquo.pbl
病人查询
patientquery
Clinic
门诊
Clinic
Clinicdoc
门诊医生站
Clinicdoc
Inhos
住院
Inhos
Inhosdoc
住院医生站
Inhosdoc
Inhosnur
住院护士站
Inhosnur
Techexam
检查系统
Exam
Techlab
检验系统
Labtest
Techoperate
手术系统
Operate
ukDossier
病案系统
Dossier
ukdrugstore
药品管理
Drug
Ukdrugexp
物品管理
Exp
ukFIXEDASSET
固定资产
Fix
ukInfect
院感系统
Infect
ukphysical
体检系统
physical
ukquery
报表系统
Query
Ukreport
院长查询
report
Ukpubuo
公用对象
Pubuo
Ukpubdw
公用数据窗口
Pubdw
Ukpubfun
公用函数
Pubfun
Ukpubcb
公用按钮事件
Pubcb
Ukpubwin
公用window
Pubwin
ukseldw
ukseluo
导出函数对象
Selold
uksysdw.pbl;
uksysdwprint.pbl;
uksysuo.pbl;
系统初始化
sys
ukzspecdw.pbl;
ukzspecuo.pbl;
zspec
pfcapsrv.pbl
PFC
Pfc
pfcdwsrv.pbl
PFC
Pfc
pfcmain.pbl
PFC
Pfc
pfcutil.pbl
PFC
Pfc
pfcwnsrv.pbl
PFC
Pfc
pfeapsrv.pbl
PFC
pfe
pfedwsrv.pbl
PFC
pfe
pfemain.pbl;
PFC
pfe
pfeutil.pbl
PFC
pfe
pfewnsrv.pbl
PFC
pfe
2.2.6引用与继承
2.3DataWindow选项
2.3.1数据写入约定
1.数据写入时,要注意edit属性中的Limit值,如果是字符型需要根据字段的长度,
写上limit值,避免因字符串超长造成的错误。
2.必输字段的required属性勾选。
3.可输入字段的showfocusrectangle属性去掉。
4.时间、数字类型及计算列中的数字合计format属性必须输入,如:
yyyy-mm-ddhh:
mm:
ss,yyyy年mm月dd日hh:
ss,#,##0.00
2.3.2Update属性
要求数据窗口更新时的Update属性,都使用Useupdate与Keyandupdateablecolumns的更新方式。
2.3.3界面元素
1.数据窗口中的字段与标签必须排列整齐,不需要的字段能删除的就尽量删除,不能删除的必须将属性修改为不可见,并且尽量缩到最小。
缩到主界面下隐藏起来。
2.界面上尽量不要出现滚动条。
如果显示不全则必须使用滚动条。
3.界面显示时字符型靠左,数字型靠右显示。
4.界面上字符,控件等风格除特殊强调因素外整体风格必须保持一致性。
5.对于对象中的不显示控件,要求统一排列在对象的右上角,不可重叠。
2.3.4状态保护
数据窗口的protect属性,可通过函数动态控制。
/*单条控制PROTECT属性每切换一行执行一次该事件.*/
longll_colcount,ll_i,ll_status
ll_status=dw_master.getitemnumber(dw_master.getrow(),'sheet_status')
ifll_status<3then
ifal_row>=1then
ll_colcount=long(dw_detail.Object.DataWindow.Column.Count)
forll_i=1toll_colcount
ifdw_detail.describe("#"+string(ll_i)+".name")<>'unit_select'then
ifdw_detail.getitemstring(al_row,'iowh_id')<>''then
iw_parent.iuo_control.of_uksetbuttonproperty("D",true)
dw_detail.modify("#"+string(ll_i)+".protect=0")
dw_detail.modify("#"+string(ll_i)+".edit.DisplayOnly=true")
dw_detail.modify("#"+string(ll_i)+".edit.autoselect=false")
else
iw_parent.iuo_control.of_uksetbuttonproperty("D",true)
dw_detail.modify("#"+string(ll_i)+".protect=0")
dw_detail.modify("#"+string(ll_i)+".edit.DisplayOnly=false")
dw_detail.modify("#"+string(ll_i)+".edit.autoselect=true")
en
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PowerBuild 编程 规范