PB命名规则及软件开发规范

PB命名规则及软件开发规范

软件的编写、维护和测试都是由多人协同完成的,这样在工作中就需要一些约定和规范来协调工作人员的工作。PB虽然吸收了很多RAD工具的优点,但工具只是设施、基础,还需要优秀的方法指导。这就需要我们制定软件书写标准以规范我们的程序开发。使程序具有很好的可读性、可维护性。

下面就pbl库划分、命名规范、注释规范、代码格式规范及界面规范进行约定。

一、应用程序pbl组成(假设应用名为app)

我们将对象进行分门别类存放,以便于查找和管理

1、 share.pbl:存放应用、菜单、公用函数、公用结构。或者命名为public.pbl 。

2、 app_win.pbl:存放窗口。

3、 app_dat.pbl:存放数据窗口对象。

4、 control.pbl:存放公用的用户对象(这些对象可以直接移植到其他的项目中使用)。

注:鉴于目前我们PB开发系统状况——【窗口】、【数据窗口对象】都比较多,第2点,3点规范不采纳,我们将对【窗口】、【数据窗口对象】都按系统大菜单的功能来命名pbl并存放在一起。

二、应用程序中对象命名规范

1、 窗口命名规范

窗口的名字以w_开头,后面加以描述其功能的英文单词。如w_label表示此窗口为标引窗口。如果A窗口为B窗口(w_label)的弹出窗口,则A窗口应命名为w_label_pop(pop为弹出窗口功能的英文名称)。(注:不做强制要求,直接w_模块功能名 也可以)

2、 数据窗口对象命名规范

数据窗口对象以d_开头,后面加上作为其数据源的表名。如以表stv_class为数据源建立的数据窗口对象应命名为d_stv_class。如果对d_stv_class进行了修改,如更改其显示风格、增加计算字段或检索参数等,则将其命名为d_winname_label(winname为窗口名,label功能名)。

注:对【数据窗口对象】再详细说明一下,按其功能作用再分命名方式。

报表:                         d_模块功能名

子报表:                      dwc_模块功能名

查找条件datawindow:    dwf_模块功能名

Windows窗口里:          dw_模块功能名

Datastore对象:           ds_模块功能名

下拉列表框datawindow:dddw_模块功能名

3、 变量命名规范

全局变量命名:以gt_开头,其中t表示数据类型的第一个英文字母,后缀为变量功能名。

依次类推实例变量以it_开头,局部变量以lt_开头。

例如:存储xml文件ip地址的全局变量可定义为:string gs_xmlip。

      存储窗口中ddlb当前选择的索引的实例变量可定义为 integer ii_index

   在dw_1:clicked!中存储dw_1行数的变量可定义为 long ll_rownum

注:对于功能意义不大,如做循环用的临时变量 i, j 等可以直接定义不做额外要求。

4、 函数命名规范

全局函数以gf_开头,后缀为能表示其功能的英文名称,如gf_connectdb表示连接数据库的全局函数。

窗口函数以wf_开头,后缀为能表示其功能的英文名称,如wf_insertlb表示往listbox中添加数据。

用户对象中的函数以of_开头,后缀为能表示其功能的英文名称,如

of_expandchild表示扩展子节点。

鉴于目前我们PB开发系统状况——基本上用户对象中的函数都以ue_开头,所有此处我们用ue_开头。

5、 用户对象命名规范

用户对象以uo_开头,后面加其功能名,如uo_treeview示此对象具有树的功能,是通用对象的命名规则。如果对uo_treeview进行特定功能的扩展,则在其后加上应用的名称,如uo_treeview_app。

如果窗口中的控件是继承可视化的用户对象,则在此控件的property的tag

中应注明其父类的名字。

6、 菜单命名规范

菜单名称以m_开头,后缀为其所挂靠的窗口名称。如挂靠w_main窗口(mdi)

的菜单名为m_main。

7、 结构命名规范

结构名以str_开头,后缀为其功能名。

8、控件的命名规范

窗口上控件的命名以PB提供的缺省前缀为前缀,后缀为此控件的功能名称。

三、注释

1、 窗口注释

在窗口的注释中说明窗口的实现的主要功能。

2、 数据窗口对象注释

在数据窗口对象的注释中说明其主要功能及所应用的窗口名称。

3、 程序注释

在程序中说明代码块实现的主要功能。

例如:

//如果当前的行号无意义,则退出

if row<0  then

return

end if

注:对于不少人用 { if row < then  return  } 这种简略试写法,我们不提倡。这种漏写{ end if } 写法,对于多个 { if块 } 时不易阅读和调试,所以尽量避免。

4、 变量注释

对于全局变量和实例变量要注释说明其所要存储对象的意义。

例如:

String gs_xmlip   //用于存储xml文件的ip地址

5、 函数、事件注释

在函数和事件的开始都要写上其所完成的功能,对于函数来说如果有参数的则要对参数进行说明。

例如:

事件注释:

//====================================================================

// 事件: .()

//--------------------------------------------------------------------

// 描述:

//--------------------------------------------------------------------

// 参数:

//--------------------------------------------------------------------

// 返回:  (none)

//--------------------------------------------------------------------

// 作者:  limin                   日期: 2010年11月29日

//====================================================================

函数注释:

//====================================================================

// 函数: .()

//--------------------------------------------------------------------

// 描述:

//--------------------------------------------------------------------

// 参数:

//--------------------------------------------------------------------

// 返回:  (none)

//--------------------------------------------------------------------

// 作者:  limin                   日期: 2010年11月29日

//====================================================================

6、 日常修改注释:

         //====================================================================

// 修改:

//--------------------------------------------------------------------

// 作者:  limin                   日期: 2010年11月29日

//====================================================================

        

注:为节省代码空间,当然也不一定要求日常修改注释要多行,也可以只写一行注释语句。但是要求必须包括三部门:【修改人】、【修改日期】、【修改内容】。修改其他同事的代码时,原代码内容尽量保留并注释掉。

对于大块功能代码可以用 { // begin 功能名  } 和 { //end 功能名}

例如:

                 // begin 功能名

                 ……….

                 ……….      

                 //end 功能名

四、代码格式规范

代码格式规范包括代码对齐,代码布局。

1、 根据功能或功能完成步骤将脚本用空行分隔成段。

例如:

dw_1.settransobject( sqlca)

dw_1.retrieve( )

insert_ddlb()

insert_lb()

2、 条件或循环语句中的代码要缩进。

例如:

if li_label=3 then

   gb_2.text="未审校"

end if

3、 代码缩进一律使用tab键。默认tab值为3个空格

4、 变量全部用小写。

五、界面规范

1、窗口、菜单、控件的布局和风格要统一,控件布局要准确

  窗口中的控件文字包括字体、颜色、大小、字体大小、字体粗细、背景颜色要一致,同一应用中的窗口和控件采用一种风格,而且在不同窗口中,功能相近的按钮最好设置在同样的位置。按钮控件需要进行细致布局,作到大小相等、行列对齐。

  推荐用9号宋体最为屏幕显示字体,这是中文Windows中提供一种的适合屏幕显示的最小字体,这种字体没有毛刺,很自然。注:我们不一定要求是9号字,但是要和整套系统字体格式统一,一些标题等客户要求字体除外。

2、窗口标题文字描述统一规范

统一使用窗口功能名加上当前登录人。

例如:目前焦点窗口为标引管理,登录人为超级用户,则窗口标题应为:

标引管理==》超级用户。(注:该处不做要求,因为我们系统一般主界面的任务栏有显示登录用户)

3、窗口中隐藏控件不要太多

窗口中隐藏控件太多的话,会导致窗口内布局比较混乱,并且会给合作人造成理解上的困难。

4、图片文件的管理

图片文件要存放在一个统一的文件夹内,并将其命名为images。程序中图片的路径都取相对路径。针对目前我们pb开发系统有images,pic,sign三种文件夹命名,故以后都必须集中在pic文件夹下,以前的都不在处理。

六、数据库操作

在程序中利用SQL语句或数据窗口对数据库进行插入、删除、修改更新时,都要判断操作结果,如果成功则commit using  sqlca;否则的话rollback using sqlca;

——————————————————————————————————————————————

pb编程中数据类型和变量的定义规则

一、.对象名称定义(命名规范) 
objectscope_type_objectname--------//scope前缀 
其中,objectscope 为:PFC_时,表示为PFC级别,否则为PFE级别(扩展级别) 

type包含以下类型 
基本对象: 
m_ Menu 
w_ Window 
d_ DataWindow 
dddw_ DropDownDataWinow 
struc_ Structure 
f_ Function 
p_ Pipelines 
用户对象: 
nvoc_ 类用户对象(定制custom) //Custom class user object 
nvos_ 类用户对象(标准standard) //Standard class user object 
voc_ 可视用户对象(定制custom) //Visual user object custom 
voe_ 可视用户对象(外部external) //Visual user object external 
vos_ 可视用户对象(标准stardard) //Visual user object stardard 
控件级对象: 
类型 说明 
cbx_ CheckBox 
cb_ CommandButton 
dw_ DataWindow 
ddlb_ DropDownListBox 
em_ EditMask 
gr_ Graph 
gb_ GroupBox 
hsb_ HScrollBar 
ln_ Line 
lb_ ListBox 
mle_ MultiLineEdit 
ole_ OLE 2 0 
ocx_ OCX 
oval_ Oval 
p_ Picture 
pb_ PictureButton 
rb_ RadioButton 
r_ Rectangle 
rr_ RoundRectangle 
sle_ SingleLineEdit 
st_ StaticText 
uo_或u_ User Object 
vsb_ VScrollBar 

二、变量名称定义 
<scope><datatype>_varialbename 
Scope为以下值之一 
类型 说明 
G Global variable 
L Local variable 
i Instance variable 
s Shared variable 

简单变量的Type为以下值之一 
类型 说明 
a Any 
b Boolean 
d Date 
dc Decimal 
e Enumerated 
l Long 
s String 
ui UnsignedInteger 
blb Blob 
ch Character 
dtm DateTime 
dbl Double 
i Integer 
r Real 
tm Time 
ul UnsignedLong 

指针变量的Type值为以下之一 
类型 说明 
app Application 
ab ArrayBounds 
Cbx CheckBox 
Cb CommandButton 
Cd ClassDefinition 
Cdo ClassDefinitionObject 
Cn Connection 
Cninfo ConnectionInfo 
Cno ConnectObject 
Cxk ContextKeyword 
Cxinfo ContextInformation 
Cpp Cplusplus 
Ds DataStore 
dw DataWindow 
dwc DataWindowChild 
drg DragObject 
Drw DrawObject 
ddplb DropDownPictureListBox 
ddlb DropDownListBox 
dwo DWObject 
dda DynamicDescriptionArea 
dsa DynamicStagingArea 
Ed EnumerationDefinition 
Eid EnumerationItemDefinition 
Em EditMask 
Env Environment 
Err Error 
ext ExtObject 
Gr Graph 
Go GraphicObject 
grax GrAxis 
grda GrDispAttr 
Gb GroupBox 
Hsb HorizontalScrollBar 
inet Inet 
ir InternetResult 
类型 说明 
Ln Line 
Lb ListBox 
Lv ListView 
Lvi ListViewItem 
Mfd MailFileDescription 
Mm MailMessage 
Mr MailRecipient 
Ms MailSession 
Mdi MDIClient 
M Menu 
Mc MenuCascade 
Msg Message 
Mle MultiLineEdit 
Nv NonVisualObject 
Oc OleControl 
Oo OleObject 
Ostg OleStorage 
Omc OmControl 
类型 说明 
Omcc OmCustomControl 
Omec OmEmbeddedControl 
Omo OmObejct 
Omstm OmStream 
Omstg OmStorage 
Oval Oval 
P Picture 
Pb PictureButton 
Pbcpp PBToCPPObject 
Plb PictureListBox 
Pl PipeLine 
Po PowerObject 
Procall ProfileCall 
Proclass ProfileClass 
Proln ProfileLine 
Prort ProfileRoutine 
Pro Profiling 
Rb RadioButton 
类型 说明 
Rec Rectangle 
Rem RemoteObject 
Rte RichTextEdit 
Rrec RoundRectangle 
Rteo RteObject 
Scrd ScriptDefinition 
Sle SingleLineEdit 
Srv Service 
St StaticText 
Std SimpleTypeDefinition 
Str Structure 
Tab Tab 
Tabpg TabPage 
Tcan TraceActivityNode 
Tcbe TraceBeginEdn 
tcerr TraceError 
Tcf TraceFile 
Tcln TraceLine 
类型 说明 
Tcgc TraceGarbageCollect 
Tco TraceObject 
Tcrt TraceRoutine 
Tcsql TraceSQL 
Tct TraceTree 
Tctn TraceTreeNode 
Tcterr TraceTreeError 
Tctsql TraceTreeSQL 
tctgc TraceTreeGarbageCollect 
tctln TraceTreeLine 
Tcto TraceTreeObject 
Tctrt TraceTreeRoutine 
Tctu TraceTreeUser 
tcu TraceUser 
Td TypeDefinition 
Tr Transaction 
Trp Transport 
Tv TreeView 
类型 说明 
Tvi TreeViewItem 
Uo UserObject 
Vrcd VariableCardinalityDefinition 
vrd VariableDefinition 
Vsb VerticalScrollBar 
Wo WindowObject 
W Window 

三、函数名称定义 
类型 说明 
f_ 全局函数 Global Function 
of_ 成员函数 
wf_ 成员函数 Window Function 
uf_ 成员函数 UserObject Function 
mf_ 成员函数 Menu Function 

猜你喜欢

转载自blog.csdn.net/tlammon/article/details/81114490