规范PB开发的方法
规范PB开发的方法
目录 第一部分应用界面一、控件选择
二、控件使用
三、菜单设计
四、界面风格
第二部分代码编写
一、命名原则
1、函数与结构命名标准
2、控件对象命名标准
3、变量命名标准
二、程序书写标准:
1、符号间距
2、缩进
3、大小写
4、注释
5、变量说明原则
第三部分编程风格
一、隐藏控件使用
二、DataWindow控件使用
三、PBL对象存储
四、图片文件管理
五、ini文件管理
第四部分程序完备性标准
一、健全帮助机制
二、健全错误处理机制
三、退出应用的注意事项
第一部分应用界面
一、控件选择
选择控件应根据每种控件的用途,而且应使界面尽可能直观,
激发某一动作
Command Button(命令按钮)
指明一种选择
CheckBox(检查框)
RedioButton(单选钮)
修饰
Line(直线)
Oval(椭圆)
Rectangle(矩形)
RoundRectangle(圆角矩形)
显示数据
DropDownListBox(下拉列表框)
DataWindow Control(DataWindow控件)
EditMask(带格式编辑框)
Graph(图形控件)
ListBox(列表框)
MultiLineEdit(多行编辑器)
Picture(图片控件)
SingleLineEdit(单行编辑器)
StaticText(静态文本)
二、控件使用
1. 避免一屏使用过多的控件,如果需要控件太多,可以用多个窗口实现。
2. 控件之间保持适当的距离,并将同类功能的控件分组且画在同一区域内。
3. 对于可编辑或可选的控件使用较明显的边框(例如:外框,阴影),对于只作提示作用的控件则不加边框。
4. 将用户在程序运行过程中不能使用的控件变灰(即Enabled=False)
5. 在MDI的Sheet中避免使用过多的PictureButton或CommandButton。如果要完成某个处理动作,可通过菜单实现。
三、菜单设计
1. 一个menu中避免有过多的菜单项。
2. 菜单一般限制在两层深度以内。
3. 用户不可使用的菜单项应变成灰色(Enabled属性置成False).
4. 菜单文字应易于理解,对于将显示对话框的菜单项应在名字后面加省略号,例About…,Open…。
5. 对于标准菜单项应使用原名,例如File, Edit,并且位置应与原来相同。
6. 对于用于状态选择的菜单项应加上选择标记(使用Check()函数)。
7. 每个菜单上应提供帮助项。
8. 用户可以使用键盘控制菜单(在菜单定义时加热键)。
9. MDI菜单除要满足上述要求外,还要符合以下要求:
(1)每个Frame Window(主窗口或狂架窗口)要有一个菜单,每一个Sheet Window(子窗口)要有一个菜单.
(2)为程序中常使的菜单项定义工具条图标(Icon).
(3)为每个菜单项提供Microlhelp.
(4)在Frame Window的菜单中应提供以下基本功能:
A、打开Sheet子窗口
B、关闭Sheet子窗口
C、显示已打开的Sheet列表
D、排列Sheet窗口
四、界面风格
1. 登录窗口
所有系统都用同样的登录窗口,这个登录窗口大家共用一个,不必自己编写代码。模版为w_login。
2. 窗口、Datawindow、静态文本等控件颜色
窗口控件用朴素颜色,如灰色和黑色。
3. 菜单项、按钮全部设置键盘快捷
比如“文件(F)”就是一个键盘快捷为Alt+F的文件菜单。当菜单太多时,建议分类分级,多用子菜单。
快捷键设置标准为:
1、同级菜单或同一窗口中的按钮不许有重复;
2、字母大致采用文本的对应英文单词第一个字母
如果第一个字母重复,则采用第2个,以次类推;
4. 一些常用的按钮或菜单功能相同,描述也要相同
(1)从菜单上关闭窗口,用“退出(&X)”菜单,从窗口中关闭窗口用“关闭(&C)”按钮;如果关闭某Response类型窗口时,用“确定(&O)” 执行某些动作,“取消(&C)”则不执行。
(2)不提倡图形按钮,图形按钮在Power Builder中实现得比较差
5. 窗口、菜单、控件的布局和风格要统一,控件布局要准确
窗口中的控件文字包括字体、颜色、大孝字体大孝字体粗细、背景颜色要一致,同一应用中的窗口和控件采用一种风格,而且在不同窗口中,功能相近的按钮最好设置在同样的位置,在不同的菜单中,功能相近的菜单项也设置在相同的位置。按钮控件需要进行细致布局,作到大小相等、行列对齐。
推荐用9号宋体最为屏幕显示字体,这是中文Windows中提供一种的适合屏幕显示的最小字体,这种字体没有毛刺,很自然。
少用或不用粗体。
6. 窗口大小要自适应屏幕像素模式
像素模式有640x480、800x600、1024x768等。如果不能作到控件自动适应窗口大小变化,则最好针对一种模式(建议800x600)布置所有控件。
7. 窗口标题文字描述统一规范
窗口标题都采用“应用名字 - 窗口功能描述”的模式。比如登录窗口,可以用“??管理信息系统 - 登录”作为标题。所有窗口都应该有标题。
8. 在一个应用中同时打开的窗口之间关系要明确
不允许在整个应用已经关闭的情况下,有的窗口还显示在屏幕上。在MDI应用中,用OpenSheet函数打开子窗口,用Open函数打开的窗口必须是Response类型的窗口,也叫模态对话框窗口。
关闭应用时,在该应用中打开的所有子窗口、非独立窗口都应关闭。
第二部分代码编写
一、命名原则
前缀_后缀,总长度40位有效。
1、函数与结构命名标准
对象类型
前缀
举例
Window
Window function
Window structure
w_
wf_
wstrc_
w_customer
wf_netcustom
wstrc_address
Menu
Menu function
Menu structure
m_
mf_
mstrc_
m_custmenu
mf_print
mstrc_address
User object
User object function
User object structure
u_
uf_
ustrc_
u_custom
uf_set_menu
ustrc_comminfo
DataWindow
dw_
dw_custdetail
Pipeline
pipe_
pipe_sales
Function
Function structure
f_
fstrc_
f_checkreqr
fstrc_checkdata
Structure
strc_
strc_selectinfo
Query
q_
q_custorders
Cursor cur_ cur_people
Procedure proc_ proc_unit
Application function
Application structure
Appf_
Appstrc_
Appf_confirm
Appstrc_loginfo
2、控件对象命名标准
在Painter中增加一个控件后PB所给的默认前缀即为标准前缀,开发者不许任意改动。
3、变量命名标准
变量名称的前缀由两部分构成:
(1)前缀首字符:对变量作用域的描述
变量作用域
前缀首字符
Global(全局)
g…
Shared(共享)
s…
Instance(实例)
i…
Local(局部)
l…
Function Argument(函数参数)
a…
(2)前缀其余字符:对变量类型的描述
大类
数据类型
前缀其它字符
标准数据类型
Blob
…bb_
Boolean
…b_
Character
…ch_
Date
…d_
DataTime
…dt_
Integer
…I_
Long
…l_
Real
…r_
String
…s_
Time
…t_
UnsignedInteger
…ui_
UnsignedLong
…ul_
PB对象类型
DataWindow
…dw_
DataWindowChild
…dwc_
MailSession
…ms_
Menu
…m_
Structure
…str_
Transaction
…trans_
User object
…uo_
Window
…w_
变量命名举例
变量命名
解释
gi_num_lines
Global integer(全局整形变量)
sstr_data[]
Shared structure array(共享结构数组变量)
iul_pointer
Instance unsigned long(实例无符号长整数变量)
lb_finished
Local boolean(局部逻辑变量变量)
adw_rows
Argument Datawindow(作为参数传递的DataWindow对象变量)
gs_buffer[]
Global string array(全局字符串数组变量)
idt_update
Instance datetime(实例日期时间变量)
idb_amount
Instance double(实例双精度变量)
lw_launch_win
Local window(局部窗口变量)
二、程序书写标准:
1、符号间距:
(1)操作符前后加空格(+,-,*,/,=,<>,<,>,>=等)。
(2)“=”号赋值时,前后加空格。
(3)根据功能或功能完成步骤将Script用空行分隔成段,段前加说明。
2、缩进:一律使用tab键缩进。
3、大小写:
(1)变量:全部小写。
(2)PB提供的系统函数:大小写混合,如MessaegBox,OpenSheet等。
(3)保留字:大写,如CREATE,DECLARE等。
4、注释:
(1)头注释: 加在script的开始部分,主要或关键Script块都必需。
主要注明:功能,参数,返回值等
(2)Script行间注释:
A. 重要语句加注释。
B. 重要局部变量加注释。
(3)User Event必须对其功能或任务加以注释
5、变量说明原则:
1. 全局变量的说明由指定人员负责,个人不能随便说明全局变量。
2. 局部变量的说明在script的开始部分。
3. 尽可能小地说明变量的作用范围。
4. 在说明Instance,Shared及Global变量时,应加足够的注释,说明变量的使用目的。
第三部分编程风格
一、隐藏控件的使用
窗口中隐藏控件太多,而在设计阶段这些隐藏控件不可见。弊端一是控件布局混乱,二是给合作开发伙伴造成理解上的困难,三是功能模块化不强。多用模态对话框(Response类型)实现一些相对独立的功能,尽量少用隐藏控件。
二、DataWindow控件
不许设置成可以随便移动或改变大校如果DataWindow随便移动,必然会遮挡其它控件,造成界面混乱。如果Datawindow太小,使用滚动条即可,不必在运行时调整大校方法是DataWindow控件不要标题。
三、在PBL库中的对象存储
在PBL库中的对象存储要按照明确的规则。在开发过程中,对象存储没有统一约定,在查找时比较困难,不知道在哪个库中去找对象,只能一一打开查找。建议将不同对象分门别类存放,比如:
PBL库文件名 描述
userobjects.pbl 存放所有用户对象
menus.pbl 存放所有菜单
windows.pbl 存放所有窗口
datawindows.pbl 存放所有datawindow
functions.pbl 存放所有全局函数
structures.pbl 存放所有全局结构
当多人开发同一程序而分类存放时,建议在库名前加上标志,比如li_datawindows.pbl等,以便知道那些库是那些人写的,避免重名。这种方法便于最终组合,也便于组合前调试。
也可以按功能或公用与非公用分开的方式存放,总之要作到线索清晰,可根据对象功能或出现位置推知存放位置。
四、图片文件管理
在设计过程中,图片经常显示不出来,主要原因是使用了绝对路径,这样在不同开发者的不同开发环境之间无法拷来拷去。使用相对路径也有一些问题,比如当前目录发生改变时,窗口中的图片也显示不出来。
建议所有开发人员使用同样的方法来管理图片文件:大家共用一个虚拟路径,用Subst命令映射一个路径为P盘,在P盘下建立与应用同名的子目录,该应用所有的子目录都放在该目录下。然后在编程序时即可放心使用p盘绝对路径,但图片实际存放在各自的目录中。比如,
将命令
subst p: e:/works/zhcx
写进autoexec.bat中即可建立一个p驱动器。在资源管理器中即可看到驱动器p:。
大家采用同样的约定,就不必为路径不同而抱怨苦恼。这种约定在生成资源文件时也方便,用dir命令将输出结果重定向到资源文件中再作编辑即可保证没有遗漏图片资源。
五、ini文件
每个应用所用的ini文件最好与应用程序同名,这样便于查找修改ini文件。
第四部分程序完备性标准
一、健全帮助机制
1. 每个复杂一点的操作都要有帮助或提示。
在一些功能复杂的窗口中增加帮助按钮,在主菜单上增加联机帮助菜单项。
2. 整个应用要有一个帮助入口。
二、健全错误处理机制
1. 必须处理用户可能出现的任何误操作。
在一些需要用户输入的场合,不会操作的人可能出现错误,比如乱点鼠标,乱点按钮等。这些错误必须避免,出现错误要给予提示和帮助。
2. System error的处理:
(1)系统出错将trigger application中的System error event事件。所以要实现System error的处理标准,应在该事件中编写script.利用error object的属性得到相关出错信息。
(2)将主要的出错信息,用中文显示,并指出行号,错误所在object及event等信息。
3. SQL语句的出错处理:
每执行完一条SQL语句,都应检查执行情况,如果出错,应调用出错处理化用程序(使用Transaction object的SQLcode,SQLBcode及SQLErrText属性得到错误信息)。
Datawindow control的出错处理:
当执行Retrieve或Update命令时,如果出错,系统将触发Debtor事件。所以对data Window Control的出错处理应编写的DBError事件中。(使用DBErrorMessage,DBErrorCode得到相关出错信息)
三、退出应用的注意事项
1. 应让操作者确认是否真的退出,以免出现数据未保留而退出等情况。
如果Window的CloseQuery事件返回1则不关闭窗口,否则关闭窗口。
2. 关闭所有数据库连接,关闭所有非独立窗口。