PB编程规范
pb编码规范
目录1.引言 (1)2. 定义和通用要求 (2)2.1 标准数据类型 (2)2.2P OWER B UILDER的控件命名规则 (2)3. 命名规则 (3)3.1 基本命名规则 (3)3.2定制对象命名规则 (3)3.3各类函数命名规则 (4)3.4变量命名规则 (4)3.5用户自定义事件命名规则 (5)4.程序书写规范 (6)4.1注释及格式要求 (6)4.1.1源代码文件的注释 (6)4.1.2 函数或过程的注释 (6)4.1.3 语句的注释 (6)4.1.4 常量和变量的注释 (6)4.1.5制定对象的注释 (6)4.2缩进规则 (7)4.2.1控制结构的缩进 (7)4.2.2缩进的限制 (8)4.3书写建议(非硬性规定) (8)5.POWERBUILDER LIBRARY的分类原则 (8)6. 程序设计的组件化和框架结构 (8)7. 程序设计底层基类的开发 (9)1.引言本规范定义一个源码级应用程序的开发规范,它是借助PowerScript语言,在PowerBuilder开发环境下提供的标准化服务。
它可供应用开发人员及系统设计人员使用。
本规范描述开发人员关心的外部特性及设施,而不是描述为达到这些功能采用的内部结构技术。
适用于使用PowerBuilder作为系统开发平台,声明服从本规范的系统开发。
2. 定义和通用要求2.1 标准数据类型PowerBuilder有以下十四种标准的数据类型(见表2-1)。
2.2 PowerBuilder的控件命名规则在PowerBuilder中,各种控件的命名采用如下前缀:3. 命名规则3.1 基本命名规则本规范中采用的命名规则,基本模式为:前缀_功能或作用描述其中前缀根据定制对象,变量类型或函数类型的不同而变化。
功能或作用描述则是对具体定制对象完成的功能的抽象;函数实现的功能抽象;变量的作用名称。
3.2 定制对象命名规则定制对象命名规则如下表3-1:其中功能或作用描述的格式是未规定的。
PB编码规范
PB编码规范一、团队开发要求●服从团队开发纪律和进度安排●未经项目负责人或项目经理的许可,不允许擅自进行可能影响到其他人员工作的任何工作,如添加数据库表、修改数据库表结构等,如有必要,必须提出书面申请,说明原因及如何操作的详细说明●代码必须符合规范,项目负责人或项目经理有权责成开发人员修改其不符合规范的代码二、版本说明●软件版本号标准为A.B,其中A和B为0到99之间的数字●当A大于1且B为奇数时,表示当前版本为处于开发、测试阶段的版本,定义为”开发版”;当B为偶数时,表示当前版本为稳定、可实际运行的版本,定义为”稳定版”●当软件开始开发时,确定版本号为0.1;随着软件开发的进度,版本号随着每一次主要功能的完善而变化,最高达到0.99●软件初步完成后,确定该软件版本号为1.0 Beta X,X代表测试的次数,这意味着软件可投入实际应用测试;当1.0 Beta X版本推出并实际应用或试运行测试后,确定该软件版本号为1.0 RC,这意味着软件可投入实际应用运行;当1.0 RC版本运行达到某一时限后,则认为该版本已稳定,可完全正常使用,确定版本号为1.0,这意味着软件开发完成●软件升级时,如功能变化不大,则次版本号变化;如功能变化较大,主版本号变化,软件的最终版本号由项目负责人或项目经理确定三、对象命名规范●常用对象命名约定A.命名方式建议用匈牙利表示法,组成方式为A_B(A表示对象的类型,B表示该对象的描述),如:窗口的命名:w_功能代码_功能描述+编写人姓名简称数据窗口对象的命名:d__对应表名称+显示方式+编写人姓名简称菜单命名:m_功能代码_功能描述+编写人姓名简称用户对象:uo__功能代码_功能描述+编写人姓名简称B.对于对象的Comments项必须写出相应的作用,如:C.详细说明如下:PowerBuilder中,对象的命名一般采用如下前缀:Prefix Object---------------------------------------------------------------dw_ DataWindowsdddw_ DropDownDataWinowsf_ Functionsm_ Menusp_ Pipeliness_ Structuresu_ UserObjectsw_ Windows●函数命名规则:函数名=’函数适用范围代码’+f+’_’+’函数功能描述’,’函数适用范围代码’描述如下:g 全局函数w 窗口函数m 菜单函数u 用户对象函数例如:替换字符的全局函数命名:gf_replace()●PBL库组织原则Library的大小最好小于1MB,数量尽量最少,分类原则有两种:1.制定对象分类法如:将所有的窗口放在一个Library中2.功能模块分类法根据功能模块的划分,将属于该模块的对象放在一个Library中较大型项目建议采用第二种分类方法●控件命名规则控件的命名必须以控件名称缩写开头,加下划线(_),后接表意的英文字符控件命名前缀约定:Prefix Control---------------------------------------------------------------cbx_ CheckBoxcb_ CommandButtondw_ DataWindowddlb_ DropDownListBoxem_ EditMaskgr_ Graphgb_ GroupBoxhsb_ HScrollBarln_ Linelb_ ListBoxmle_ MultiLineEditole_ OLE 2 0ocx_ OCXoval_ Ovalp_ Picturepb_ PictureButtonrb_ RadioButtonr_ Rectanglerr_ RoundRectanglesle_ SingleLineEditst_ StaticTextuo_ User Objectvsb_ VScrollBar四、变量命名规范●变量命名总体原则:变量定义时加上注释标明其含义,如:String ls_name //验船师姓名变量命名规则为:变量类型+ 数据类型+ ‘_’+ 含义代码例如:字符型实例变量:is_id //登陆人员ID号日期型全局变量:gd_modify //修改日期一般变量,用小写字母●作用域命名约定:Prefix Scope---------------------------------------------------------------g_ Globals_ Sharedi_ Instancel_ Local●变量类型前缀约定:Prefix Datatype---------------------------------------------------------------b_ Booleanblob_ Blobd_ Doubledate_ Datedec_ Decimaldt_ DateTimei_ Integerl_ Longs_ Stringt_ Timeui_ Undisgned Intul_ Undisgned Longtr_ Transaction objectdo_ Dragobjectdwc_ DataWindowChildnvo NonVisulObject五、编程规范●书写格式用分层缩进的写法显示嵌套结构的层次,采用PB默认的Tab键(三空格)缩进;每行只写一条语句,当需要滚动显示时应该分行写●注释及格式要求1.对函数或过程必须加注释,函数头部说明函数功能和参数2.对语句不易理解的加注释3.对变量、常量应加注释,尤其是全局变量、常量4.用户自定义对象加标注对象的用途、制定人员、定义时间(修改时间)等注释●具体格式要求如下:1.在窗口Open事件前应说明//*======================================*///窗口名称://窗口作用://作者://日期://*=======================================*/2.在事件脚本前应说明://*=======================================*///脚本作用://作者://日期://修改人姓名://修改日期://修改原因://*=======================================*/若有多人修改,每人均加上姓名、日期、原因,对原有注释不可删除,在修改的地方加上修改人名,”Beginning Modification”,’Ending Modification”字样3.脚本中的注释单行注释://注释文本程序段注释://*=====================================*///// 注释文本////*=====================================*/变量注释:数据类型变量名//注释4.函数、存储过程的注释//*=====================================*///函数名称://参数解释://功能描述://调用举例://原作者://编写日期://返回值://变量情况://修改人://修改日期://修改原因://*=====================================*/5.脚本编程规范A.单行注释与当前Script程序的缩进位置对齐,如://Comments1If … Then//Comments2If …Then//Comments3…End IfEnd IfB.SQL语句书写格式:Select name,sex,dep_idInto :ls_name,:ls_sex,:ls_dep_idFrom employeeWhere emp_id=:ls_emp_id;C.PB保留字首字母大写其余小写,内部函数及属性每个字首字母大写其余小写,如:This,True,sle_user.Text,dw_1.SetTransObject(Sqlca)六、控件编程规范●公共约定:A.尽量为所有控件使用有意义的名称,重要控件不可使用cb_1之类无明确意义的名称B.字体:各窗口控件字体为宋体,字号为10号C.窗口用800x600分辨率大小●数据窗口规范显示风格:FREEFORM字体:宋体字号:10号背景色:自定义(RGB(242,241,238))标题:背景色同上,字体色:黑色,边框:NoBorder,居右放置,加冒号数据:背景色:白色,字体色:自定义(RGB(0,0,100)),边框:Box(2) ,居左放置不可编辑字段背景色为:SILVERTABLE ORDER顺序:先左右,后上下LABLE内字一般左对齐(货币、日期、时间等除外)编辑框高度:64 单位:采用PB默认的日期格式:YYYY-MM-DD日期和数字型的风格设定:EDIT选择EmptyStringsNullEDIT的类型如果使用DropDownDatawindow,宽度最好不用滚动条,要有纵向滚动条,不允许编辑ALLOWEDITINGFreeForm格式各字段间隔可根据具体情况自定,原则上不要出现滚动条即可显示风格:GRID字体:宋体字号:10号标题:自定义兰色RGB(99,143,195) 字体色:白色边框(Border):Raised(6) 高度:60数据显示风格: 采用”斑马线”式样在数据字段行->属性->背景(BackGround Color)->Expression下写入如下表达式:IF(MOD(GETROW(),2)=0,RGB(247,247,247), RGB(223,223,223)) //颜色显示记录) 各数据栏宽度:76 单位:采用PB默认的数据栏数据显示:一般长短不一的文字居左,数据项、货币居右,固定文字(如单位)居中计算字段的显示:要有统计记录条数;算字段背景色为自定义RGB(250,250,145),字体为黑色,计算字段行宽同数据栏宽度,计算行用矩形框(带边框),矩形框背景同计算字段背景色。
PowerBuilder程序编码规范
PowerBuilder程序编码规范1 全局变量命名规范全局变量以g开头,紧接类型+下划线变量功能名称,具体规则如以下Blob gblb_功能名Integer or Int gi_功能名Boolean gb_功能名Long gi_功能名Char gc_功能名character gc_功能名real gr_功能名Date gd_功能名String gs_功能名DateTime gdt_功能名Time gt_功能名Decimal gr_功能名Dec gr_功能名UnsignedInteger gui_功能名UnsignedInt gui_功能名UInt gui_功能名Double gr_功能名UnsignedLong gui_功能名ULong gui_功能名对象变量go_功能名或者g对象简写_功能名1.1.2 本地变量命名规范全局变量以l开头,紧接类型+下划线变量功能名称,具体规则如以下Blob lblb_功能名Integer or Int li_功能名Boolean lb_功能名Long li_功能名Char lc_功能名character lc_功能名real lr_功能名Date ld_功能名String ls_功能名DateTime ldt_功能名Time lt_功能名Decimal lr_功能名Dec lr_功能名UnsignedInteger lui_功能名UnsignedInt lui_功能名UInt lui_功能名Double lr_功能名UnsignedLong lui_功能名ULong lui_功能名对象变量lo_功能名或者l对象简写_功能名1.1.3 实例变量命名规范全局变量以i开头,紧接类型+下划线变量功能名称,具体规则如以下Blob iblb_功能名Integer or Int ii_功能名Boolean ib_功能名Long ii_功能名Char ic_功能名character ic_功能名real ir_功能名Date id_功能名String is_功能名DateTime idt_功能名Time it_功能名Decimal ir_功能名Dec ir_功能名UnsignedInteger iui_功能名UnsignedInt iui_功能名UInt iui_功能名Double ir_功能名UnsignedLong iui_功能名ULong iui_功能名对象变量io_功能名或者i对象简写_功能名1.1.4 函数和事件参数命名规范全局变量以a开头,紧接类型+下划线变量功能名称,具体规则如以下Blob ablb_功能名Integer or Int ai_功能名Boolean ab_功能名Long ai_功能名Char ac_功能名character ac_功能名real ar_功能名Date ad_功能名String as_功能名DateTime adt_功能名Time at_功能名Decimal ar_功能名Dec ar_功能名UnsignedInteger aui_功能名UnsignedInt aui_功能名UInt aui_功能名Double ar_功能名UnsignedLong aui_功能名ULong aui_功能名对象变量ao_功能名或者a对象简写_功能名1.1.5 窗口、函数、可继承对象命名规范窗口命名规范:w_模块名_功能名函数命名规范:f_模块名_功能名可继承对象命名规范:uo_模块名_功能名datawindow对象命名规范:d_模块名_功能名下拉datawindow命名规范:dddw_模块名_功能名窗体函数命名规范:wf_功能名可继承对象函数命名规范:uf_功能名窗口自定义事件命名规范:Ue_功能名可继承对象自定义事件命名规范:ue_功能名1.1.6 可视化控件命名规范一般遵循pb推荐的规则,即控件类型简写_功能名CommandButton cb_功能名PictureButton pb_功能名CheckBox cbx_功能名RadioButton rb_功能名StaticText st_功能名Picture p_功能名GroupBox gb__功能名Line ln_功能名Oval oval_功能名Ractangle r_功能名RoundRactangle rr_功能名SingleLineEdit sle_功能名EditMask em_功能名MultiLineEdit mle_功能名RichTextEdit rte_功能名HScrollBox hsb_功能名VScrollBox vsb_功能名DropDownListBox ddlb_功能名DropDownPictureListBox ddplb_功能名ListBox lb_功能名PictureListBox plb_功能名ListView lv_功能名TreeView tv_功能名Tab tb_功能名DataWindow dw_功能名Grap h gr_功能名OleControl ole_功能名UserObject uo_功能名TabPage tabpage_功能名一、库文件命名及对象存放库文件命名规范如下:<子系统代号>_[<模块代码_>]<对象分类缩写>[<序号>][_<功能描述>].pbl对象分类缩写如下表:对象分类缩写Window winDataWindow dwUserObject uoStructure strProject prjGlobal Function fnMenu mn其他(包括Application、主窗口、About窗口等)main例如一个销售子系统的库文件及说明如下表所示:库文件名说明sale_main.pbl 销售子系统的主应用对象库,包含Application、主窗口、主菜单等对象。
PB编程规范
一、编程对象的分类以PowerBuilder作为前台开发工具,进行软件开发的过程中,所涉及的编程对象如表1-1所示。
表1-1 编程对象分类二、编程对象的组织使用PowerBuilder开发工具产生的对象,可以按照设计(正在编写和调试)和运行(调试、编译结束,可以接受测试和运行)中的状态进行编程对象的组织规划,重点是目录结构的划分,具体目录的相对关系如表1-2所示。
三、团队开发a.服从团队开发纪律和进度安排。
b.未经项目负责人或项目经理的许可,不允许擅自进行可能影响其他人员工作的任何工作,如添加Library,添加数据库表等;如有必要,必须提出书面申请,说明原因以及要改动的操作的详细说明,由项目管理人员统一进行操作和协调。
c.代码必须符合标准规范,项目负责人或者项目经理有权责成开发人员修改其不符合开发规范的代码。
d.代码集中存放到文件服务器的某一目录,客户机统一映射为固定盘符,确保程序在任何时候都是完整的可用版本而不是零散的代码集,不允许拷贝到本地硬盘进行开发。
e.当编写某些公用部件和代码时,必须使用Check out 功能确保代码独占使用而不能让其他人同时也修改,当修改完成的时候必须及时使用Check in 功能确保代码消除独占状态以使其他人能及时使用修改后的代码。
f.各人设置自己在团队中的User ID:Library->Source->Connect->选择[PB Native]->设置User ID,填写自己姓名的拼音缩写或者英文名。
4.版本说明a.软件版本号标准为A . B,其中A和B为0到99之间的数字。
b.当A大于1并且B为奇数时,表示当前版本为处于开发、测试阶段的版本,定义为“开发版”;当B为偶数时,表示当前版本为稳定的、可实际运行的版本,定义为“稳定版”。
c.当软件开始开发时,确定版本号为0.1;随着软件开发的进度,版本号随着每一次主要功能的完善而变化,最高达到0.99。
PB 编码规范
PB 编码规范。
原来在聚赫的时候写的这是2010年写的一个规范给公司内部使用的。
PB毕竟是一个老语言了,命名规范和java,c# 差别很大其实代码规范见仁见智吧,良好的书写规范对自己没坏处的,当然对公司也大大的有好处,毕竟谁看到写的乱糟糟的代码心里都不爽。
但是真正能按照规范写代码的人毕竟不是太多,特别特别是代码的注释,更特别特别的是修改注释。
在看到蛋疼代码有蛋碎感的同时,还有一种想爆粗口的念头,想想别人看到咱们的代码会不会也有同样的感觉,所以大家尽量书写规范的代码,共勉。
变量命名规范(这样命名的变量很容易看明白这是实例,全局还是局部,已经变量的类型,变量的意义为修改代码带来方便)变量作用域+ 变量类型+ _ + 变量意义说明串一、变量作用域全局变量g_共享变量s_ //不推荐使用,共享变量不依赖于对象的实例存在实例变量i_局部变量l_注意:四种作用域前缀字母都为小写二、变量类型(以局部变量为例)数据类型类型声明前缀整形Integer li_字符型String ls_日期Date ld_日期时间DateTime ldt布尔Boolean lb_浮点Decimal ldec_Double Double ldou_注意:以上是主要的数据类型,前缀都是小写三、变量意义说明串变量说明字符串可以有2中写法1.推荐使用英文字符串做说明串,每个单词的首字母都要大写,如:ls_CheckedDate2.在英文不好表达时,可以使用中文全拼代替,前两个中文汉字使用全拼,首字母大写,后面汉字使用全拼的首字母,都要大写如:lb_DianJiLBTPX 点击列标题排序可能有人会说用拼音不好,要用英文。
相对于用词霸翻译过来的英文我更只是用中文拼音。
其实pb也支持直接用中文,呵呵四、变量声明1.变量类型使用全称,如:整类使用Integer 而不是Int2.变量类型首字母大写,其余字母全小写如:String3.变量声明尽量不要在一行中声明太多变量,分行处理,在变量不多时可以每行声明一个变量4.变量名称要具有一定的实际意义,做到见其名知其意,在比较难理解时在变量后面添加必要的注释文字程序注释[可以使用pbhelper来辅助完成]程序注释可分3种注释1.函数、事件的说明注释。
pb 编码规范
pb 编程规范声明:为了明确命名意图,所有命名使用英文单词或缩略词。
一. 对象/控件/函数/方法命名规范1.对象命名规则命名必须全部用小写字母, 可以用”_”作为分割符, 例如:2.控件命名规则3.方法/函数命名规则必须以小写字母开头, 采用大小写混合形式, 并且应足够长以描述它的作用. 而且, 方法名应以一个动词起首,如getUserRight()exitProgram()对于比较长的单词推荐使用缩略语以使名称的长度合理化. 当使用缩略语时, 要确保它在整个使用程序中的一致性. 如果一会儿使用Cnt, 一会儿使用 Count,将导致不必要的混淆。
二. 常量和变量命名约定1.常量必须全部大写, 如:constant int MAXVALUE=102.变量三. pb编码规范1.程序头注释约定所有类,接口的开始都要有关于这个类(接口)的注释:/*** Title: Pushclass* Description: function* Copyright: Copyright (c) 2000* Company: GE.Corp* @author: raogaohua* @version: 1.0*/2.函数/方法注释规范所有的函数/方法的开始都应该有描述这段代码的功能的一段简明注释. 但是这种描述不应该包括具体执行过程,因为这常常是随时间而变的,可能会成为错误的注释./*** Name: compString* Description: 找出一个String在一个String[]中位置index* Author: zhaoshouiang* @param strArray String数组* @param strFind 需要找的String* @return >=0:找到, 返回strDind在strArray中的index* -1: 没找到*/public int compString(String[] strArray, String strFind)在方法中的注释要求做到下列几点:A.每一个重要变量的声明应该包括一个嵌入注释,来描述变量的使用.B.变量、控件及函数/方法的命名应该足够清楚, 使得只有复杂的执行细节才需要嵌入注释.C.列举主要数据对象、函数/方法、算法、数据库及系统需求. 一段描述算法的伪代码能会有所帮助。
系统软件编制规范(PB)
目录一引言 (1)1 编写目的 (1)2 背景..................................................................................................... 错误!未定义书签。
二设计规范. (1)1 系统规划 (1)2 文件管理 (2)2.1 目录管理 (2)2.2 文件命名规范 (3)2.3 文件备份机制 (3)3 程序设计规范 (3)3.1 界面风格 (4)3.2 命名规范 (6)3.3 快捷键的定义 (10)3.4 编程规范 (10)3.5 编程风格 (11)系统软件编制规范一引言1编写目的统一整个软件的界面风格,确定软件编制过程中“库文件”、“控件”、“变量”、“对象”、等的命名规范,增强软件开发过程中的规范性、使用时的易维护性。
二设计规范1系统规划1.1计划制定1.2计划实施2文件管理2.1目录管理(1)目录开发过程中程序、文件、文档、备份等按功能要求分别存放在D:\code\app目录下的不同子目录下,具体如下:程序: D:\code\app\模块名流程图和文档: D:\code\app\doc\模块名可执行文件:D:\code\app\exe\模块名备份文件:D:\code\app\bak\模块名sql文件:D:\code\app\sql\模块名图片文件: D:\code\app\bmp\模块名(2)库文件(PBL)程序开发过程中的各种对象按功能分别存放不同的PBL中,并附加说明。
(如:有系统管理、计划管理、生产管理、物流分析及控制、采购管理、仓库管理、财务管理、通用查询、数据通信等模块,各模块主文件命名规则是模块名的汉语拼音缩写,分别对应如下:公共应用名称:tyfz父类组件:inherit.pbl(与业务无关)公共组件 pub.pbl(与业务有关)应用一:xtgl系统管理数据窗口:xtgl_dw.pbl系统管理窗口:xtgl_w.pbl系统管理函数及其它:xtgl_func.pbl应用二:jhgl计划管理数据窗口:jhgl_dw.pbl计划管理窗口:jhgl_w.pbl计划管理函数及其它:jhgl_func.pbl应用三:scgl生产管理数据窗口: scgl_dw.pbl生产管理窗口: scgl_w.pbl生产管理函数及其它: scgl_func.pbl应用四:wlkz物流分析及控制数据窗口: wlkz_dw.pbl物流分析及控制窗口: wlkz_w.pbl物流分析及控制函数及其它: wlkz_func.pbl应用五:cggl采购管理数据窗口:cggl_dw.pbl采购管理窗口:cggl_w.pbl采购管理函数及其它:cggl_func.pbl应用六:ckgl仓库管理数据窗口: ckgl_dw.pbl仓库管理窗口: ckgl_w.pbl仓库管理函数及其它: ckgl_func.pbl应用七:cwgl财务管理数据窗口: cwgl_dw.pbl财务管理窗口: cwgl_w.pbl财务管理函数及其它: cwgl_func.pbl应用八:tycx通用查询数据窗口: tycx_dw.pbl通用查询窗口: tycx_w.pbl通用查询函数及其它: tycx_func.pbl应用九:sjtx数据通信数据窗口: sjtx_dw.pbl数据通信窗口: sjtx_w.pbl数据通信函数及其它: sjtx_func.pbl各种对象应分类分别存放在相应的pbl中。
PB编程要求
20071219新增
1、当使用F_FkDataCheck()函数判断是否被应用时,切忌只要返回值不等于“1”时都是被应用了!
2、所有放在窗体上方的按钮之间的间距为默认单位值:18;即:当前按钮的X值和前面按钮的X+Width的差值为18;当按钮一行放不下的情况下分成多行显示!!!
b、所有放在窗口底部的按钮没有特殊需求的情况下都要使这组按钮对于窗口水平线左右居中,目测就可以了!
2、所有对数据窗口对象需要加条件进行刷新的操作,切忌直接通过GetSqlSelect()中查找From来进行Where条件相加,这样不利于程序的拓展,现有方法:通过窗口实例变量存取GetSqlSelect()结果,然后直接在这个变量的基础上进行条件拼接,这样有利于程序的维护和拓展!
2、查询条件数据的生成规则:
1)、如果基础数据中有拼音码的:条件生成规则为:拼音码左取8位并且都统一成大写+名称+150个空格+序号(主键ID序号)
2)、如果基础数据中没有拼音码有编码的:条件生成规则为:编码左取8位并且都统一成大写+名称+150个空格+序号(主键ID序号)
2)、如果基础数据中没有拼音码并且没有编码的:条件生成规则为:名称+150个空格+序号(主键ID序号)
20071221新增
1、数据窗口对象中挂子数据窗口对象的可编辑的字段一定要注意子数据窗口的显示宽度、勾选垂直滚动条属性、设置一次显示10条记录!!!
2、如果窗口上有“隐藏查询条件(Y)”按钮的一定要放在“返回”或“退出”按钮的前面!!即:按钮的倒数第二位!!!
PB程序编制规范(初稿)
PB程序编制规范版本历史1概述为提高编码效力,减少程序差错,保持各产品间界面风格统一,特制定以下PB程序编制规范,如在门户框架下的程序开发都应遵守本规范。
2命名规范2.1文件2.1.1 PBL文件XX_XXXX:系统简写+_+库名XX_MAIN:主库(主窗口,主菜单及本系统的私有维护)XX_PUBLIC:本系统的公用部份XX_XXXX: 业务功能1全局PBL注:有些基于某个产品的公共PBL需要互相产品组间沟通后共享使用,例如:在HRP系统中的HIS_SHARE.PBL2.1.3资源文件2.2应用应用名一般与产品的简称同名2.3菜单M_XXX_XXXX(W__PBL名称_功能名称)例:在BQ_YZCL.PBL中菜单M_BQ_YZCL_YZSR2.4窗口W_XXX_XXXX(W_PBL名称_功能名称)例如:yk_bisiness.pbl中,药库入库处理窗口为W_YK_BISINESS_RKCL,药库主窗口命名为W_YK_BISINESS_MAIN新建窗口规定:2.5控件<控件前缀> + '_' + 控件名称控件命名按照PB默认的前缀,详细如下:2.6对象<对象前缀> + '_'+PBL名称+'_'+ 对象名称U_XXX_XXXX(非可视对象,U__PBL名称_对象名称) VU_XXX_XXXX(可视对象,VU__PBL名称_对象名称)注:非可视对象需继承自nvo_Module特别注意1.门户程序不能使用非门户中的对象2.非门户程序在BS_PUBLIC公共库有相同功能组件的情况下,不得使用其它组件2.7变量<变量作用范围前缀> + <变量数据类型前缀> + '_' + 变量名称例:门诊号参数As_mzhm注:门户下的产品不能使用自定义公共全局变量BSHRP4规定全局变量如下:2.7.1作用范围2.7.2数据类型2.8结构2.9函数2.10事件所有用户自定义事件均以ue_开头,后接事件名称。
最全PB串口编程资料
PB串口编程资料----MSCOMM32参数基本介绍MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows 下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。
OnComm 事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent 属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm 控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。
1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
pb开发规范
实例变量(INSTANCE VAR) is_name
共享变量(SHARED VAR) ss_name
局部变量(LOCAL VAR) ls_name
定义整型变量
全局变量(GLOBAL VAR) gi_name
Prefix Control
---------------------------------------------------------------
cbx_ CheckBox
列表框(LISTBOX) lb_name
图形列表框(PICTURELISTBOX) plb_name
ListView控件(LISTVIEW) lv_name
TreeView控件(TREEVIEW) tv_name
Tab控件(TAB)Tab页 tab_name tabpage_name
实例变量(INSTANCE VAR) ii_name
共享变量(SHARED VAR) si_name
局部变量(LOCAL VAR) li_name
三、 其他命名
名称 命名规则
双精度浮点型变量(DOUBLE) Xdou_name
整型变量(INTEGER) Xi_name
长整型变量(LONG) Xl_name
实型变量(REAL) Xr_name
结构体变量(STRUCTURE) Xstr_name
1)、作用域命名
Prefix Scope
---------------------------------------------------------------
。新建对象时,首先想到的应当是“inherit”,而不是“new”!
pb编程规范
PB开发规范一、命名规范1、Pbl库命名:一般采用模块缩写+存放对象类型.pbl命名,原则上单个pbl库不要超过2M大小,超过可以用模块缩写+存放对象类型+序号.pbl命名。
比如:MZ_DDDW_1.PBL。
2、Pbl库中存放对象的命名规则:3、窗口中控件命名规则:前缀用pb默认的缩写,加‘_’,后跟有意义的名字,不要采用p_1,p_2等无意义的命名。
4、PB变量命名规则:PB变量作用域前缀+pb变量类型前缀+_+有意义的名称,如string ls_doctor_name。
其中变量类型前缀如下:变量作用域约定如下:二、程序规范1、 书写格式 ● 单个事件或函数中的代码行数不能超过150行 ● 用分层缩进的写法显示嵌套结构的层次.● 在注释段与程序段,以及不同逻辑的程序段之间插入空行. ● 每行只写一条语句,当需要滚动显示时应该分行书写. ● 把单行注释与当前script 程序的缩进位置对齐: ●变量书写注意事项: ①变量全部用小写;②变量声明全部在脚本之前声明完毕; ●当连接起来的字符串超过了两行的长度时,使用 + 符作为下行的第一个字符,每次均采用缩进格式.字符串的随后部分应该再次缩进. ●建议PowerBuilder 保留字(关键字)、内部函数及属性首字母大写其余小写,这样看起来层次清晰,可通过一些工具规整。
●SQL 语句按如下格式书写:SELECT name,sex,dept_idINTO :ls_name,:ls_sex,:ls_dept_idFROM employeeWHERE emp_id = :ls_emp_id ;●程序中应避免出现goto跳转语句.●所有操作符(包括等号)前后应留一空格,使程序看起来更清晰.例如:ls_msg = ls_title + ls_error2、合适的注释对象的注释,可以在对象的Painter中增加注释,这些注释可以在Library Painter中看到.变量声明时,除临时变量i、j、k等外,原则上每行一个,在后面必须注释.对于Script,要在所有的事件处理程序或函数中添加完整的注释.首先,在每个Script的开头加注释,解释本Script段的功能、编写人员、编写时间、参数要求(如入口和出口参数等)在各程序段中编写必要的备注,备注应控制在20%的脚本量。
PB编程规范(v4.0)
密级公开()普通(√)秘密()机密()绝密()PB编程规范文档编号:<文档编号(按照文档编码规范)>文档归类:项目规范文档作者:李程扬创建时间:2002-07-02修改时间:2005-09-29版本号:v3.0(2002-07-31)、v4.0(2005-09-29)文档传阅:ZHIS4项目组成员为提高程序开发效率,降低软件开发过程中出现错误的几率,使系统模块保持一致的风格,在开发过程中应该遵循一定的编程标准。
规范提供的是定义一个源码级应用程序的开发规范,它是借助PowerScript语言,在PowerBuilder开发环境下提供的标准化服务。
它可供应开发人员及系统设计人员使用。
本规范描述开发人员关心的外部特性及设施,而不是描述为达到这些功能采用的内部结构技术。
1、命名规范:1.1 命名总则:1.1.1 除了特殊说明外,所有命名均须使用规定的前缀标识,即“标识_功能说明”;1.1.2 所有命名的功能说明部分均为用下划线(_)分隔单词;1.1.3 “功能说明”部分的单词先后顺序以尽量使同一类别的对象排列在一起为原则,以便于查找定位;1.1.4 绝对禁止用单纯的数字或汉语拼音简码来命名,如ls_1、ls_brxm(病人姓名),必须使用与具体功能相关的单词或单词缩写,且尽可能使用行业常用术语或约定词汇,即词能达意、沟通方便;1.1.5 命名的原则是尽量能从名称上看出更多的隐含基本信息,如变量的作用域、变量类型等;1.2 对象命名规范:注意事项✌.对象命名:对象类型标识_功能说明,当然应用对象命名无须前缀标识;✌.对于窗口与数据窗口的命名,推荐采用“标识_子类别_名词_动词_备注”命名方式,这样可以把同类对象排在一起,编程时便于查找,应用框架也较为明晰;例如:w_employee_edit_gridw_employee_edit_freed_dept_previewd_dept_configd_query_apply_sheetd_query_lay_physicd_rpt_staff_print_freed_rpt_staff_print_grid由上,对于数据窗口子类别命名可遵循:打印(print)、查询(query)、报表(rpt) ✌.对于有继承关系对象的命名(窗口、菜单、用户对象),推荐用“父类_子类说明”;例如:w_spellw_spell_applyw_spell_apply_sicku_dwbuttonu_dwbutton_add1.3 变量命名规范:1.3.1 变量作用域前缀:注意事项✌.编程时对于全局变量、共享变量与实例变量能不使用时尽量不用,如可以用参数传值时就不要定义实例变量;1.3.2 变量类型前缀:注意事项✌.字符串类型统一用String,而不准使用Char类型;✌.日期类型推荐以“_date”作为后缀,时间类型以“_time”作后缀,✌.整型定义推荐都使用Long,因为Integer短整型最大值为32767,某些情况下可能会溢出;另外无符号长整型(UnsignedLong)与短整型(UnsignedInteger)的前缀与有符号类型一样;✌.浮点类型统一使用Decimal,不用Double或Real类型;Decimal在定义变量时须指定精度,即使是无小数位的情况下;若是存数据库列值的变量一定要注意与列的小数精度一致,这一点切记;例如:Dec{3} ldc_pres_costDec{0} ldc_nullah_numberDec{2} ldc_lay_physic_quantityDec{2} ldc_physic_pack_spec✌.对于存数据库数值类型列的变量一定要注意其是否有小数及其位数,另外,一定要使用Decimal类型变量,绝对不准使用Long类型,即使当前值它位数足够,但你不能保证将来变动时Long类型变量位数也足够存其值!✌.对于其它没列出的对象类型,取其单词首字母为前缀;例如:TranceObject lto_connect1.3.3 变量访问范围:注意事项✌.所有共享变量或实例变量都必须设置访问范围(Public、Protected、Private),不推荐使用Public类型,而用of_get_xxx与/或of_set_xxx向外提供封装接口;✌.在对象内使用全局变量时,尽可能在使用前把它赋值给同类型的实例变量,以使模块移植性更好(方便),例如,对象Constructor事件或窗口Open事件中:IS_LOGIN_DEPT_CODE = GS_LOGIN_DEPT_CODE1.3.4 变量名称:注意事项✌.对于从数据库或数据窗口中取值的变量,其后部分尽量用数据库字段名;例如:String ls_item_nameDec{3} ldc_total_dosage1.4 控件命名规范:注意事项✌.控件命名:“控件类型前缀_功能说明”,界面设计时其[作用范围]不用标示,如树形控件tv_physic;但在脚本中定义时必须遵循《变量命名规范》,如数据窗口控件:idw_send;✌.界面设计时不能使用控件的缺省名称(如cb_1,dw_2),须用与控件功能相关的单词,单词间用下划线(_)相隔;当然一些图示控件(如GroupBox,Line)可以除外;一般界面有多个相同类型控件或控件名要在代码中引用时就要改变其缺省定义。
pb程序规范
pb程序规范一、书写格式a. 用分层缩进的写法显示嵌套结构的层次。
b. 在注释段与程序段,以及不同逻辑的程序段之间插入空行。
c. 每行只写一条语句,当需要滚动显示时应该分行书写。
二、流控制流控制首先应遵守PowerBuilder语法规范,且用分层缩进的写法突出显示嵌套的层次结构,例如:For i = 1 To 100For j = 1 To 50For k = 1 To 200Matrix[i,j,k]=1NextNextNext三、注释及格式要求注释总是加在程序中需要概括性说明或不易令人理解或容易令人理解错的地方。
注释语言应简练、易懂而又准确,所采用的语种首选是中文,如有输入困难或特殊需求也可采用英文。
注释原则:a. 函数或过程的注释(1) 在函数头部必须说明函数的功能和参数(值参、变参);(2) 在函数的主体部分,如算法复杂时,应以注释的方式对其算法结构做出说明;(3) 函数申请过全局资源且有可能导致资源紧张应加以注明(如内存和文件柄等);(4) 函数有副作用一定以十分醒目的方式(如加!号等)注明。
b. 语句的注释(1) 应对不易理解的分支条件表达式加注释;(2) 不易理解的循环,应说明出口条件(有GOTO的程序还应说明入口条件);(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明。
c. 常量和变量的注释在常量名声明后应对该名做适当的注释,注释说明的要点是:(1) 被保存值的含义(必须) ;(2) 合法取值的范围(可选);(3) 全局量需要对以上逐点做充分的说明。
d. 制定对象的注释每个开发人员针对自己所制定的窗口、菜单、数据窗口、数据管道和用户对象等添加注释,要点是:(1) 标注对象的用途;(2) 标注对象的制定人员;(3) 标注时间或者修改时间。
具体格式要求如下:1. 在窗口Open事件前应说明/* ======================================================= */// 窗口中英文名称:// 窗口作用:// 作者:// 日期:/* ======================================================= */2. 在事件脚本(Script)之前应说明/* ======================================================= */// 脚本作用:// 输入参数及数据类型:// 返回参数及数据类型:// 全局函数及其用途:// 全局变量及其用途:// 作者:// 日期:// 修改人的姓名:// 修改日期:// 修改原因:/* ===================================================== */若有多人修改,每个人均加上自己的注释,而不能改他人的姓名、日期、原因,对要修改的脚本,只能注释不能删除,并且在修改的地方加上修改人名、日期和"Beginning Modification... ","Ending Modification"字样。
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表示数据类型的第一个英文字母,后缀为变量功能名。
系统软件编制规范(PB)
目录一引言 (1)1编写目的 (1)2背景 .........................................................................................错误!未定义书签。
二设计规范 (1)1系统规划 (1)2文件管理 (2)2.1目录管理 (2)2.2文件命名规范 (3)2.3文件备份机制 (3)3程序设计规范 (3)3.1界面风格 (4)3.2命名规范 (6)3.3快捷键的定义 (10)3.4编程规范 (10)3.5编程风格 (11)系统软件编制规范一引言1编写目的统一整个软件的界面风格,确定软件编制过程中“库文件”、“控件”、“变量”、“对象”、等的命名规范,增强软件开发过程中的规范性、使用时的易维护性。
二设计规范1系统规划1.1计划制定1.2计划实施2文件管理2.1目录管理(1)目录开发过程中程序、文件、文档、备份等按功能要求分别存放在D:\code\app目录下的不同子目录下,具体如下:程序: D:\code\app\模块名流程图和文档: D:\code\app\doc\模块名可执行文件:D:\code\app\exe\模块名备份文件:D:\code\app\bak\模块名sql文件:D:\code\app\sql\模块名图片文件: D:\code\app\bmp\模块名(2)库文件(PBL)程序开发过程中的各种对象按功能分别存放不同的PBL中,并附加说明。
(如:有系统管理、计划管理、生产管理、物流分析及控制、采购管理、仓库管理、财务管理、通用查询、数据通信等模块,各模块主文件命名规则是模块名的汉语拼音缩写,分别对应如下:公共应用名称:tyfz父类组件:inherit.pbl(与业务无关)公共组件 pub.pbl(与业务有关)应用一:xtgl系统管理数据窗口:xtgl_dw.pbl系统管理窗口:xtgl_w.pbl系统管理函数及其它:xtgl_func.pbl应用二:jhgl计划管理数据窗口:jhgl_dw.pbl计划管理窗口:jhgl_w.pbl计划管理函数及其它:jhgl_func.pbl应用三:scgl生产管理数据窗口: scgl_dw.pbl生产管理窗口: scgl_w.pbl生产管理函数及其它: scgl_func.pbl应用四:wlkz物流分析及控制数据窗口: wlkz_dw.pbl物流分析及控制窗口: wlkz_w.pbl物流分析及控制函数及其它: wlkz_func.pbl应用五:cggl采购管理数据窗口:cggl_dw.pbl采购管理窗口:cggl_w.pbl采购管理函数及其它:cggl_func.pbl应用六:ckgl仓库管理数据窗口: ckgl_dw.pbl仓库管理窗口: ckgl_w.pbl仓库管理函数及其它: ckgl_func.pbl应用七:cwgl财务管理数据窗口: cwgl_dw.pbl财务管理窗口: cwgl_w.pbl财务管理函数及其它: cwgl_func.pbl应用八:tycx通用查询数据窗口: tycx_dw.pbl通用查询窗口: tycx_w.pbl通用查询函数及其它: tycx_func.pbl应用九:sjtx数据通信数据窗口: sjtx_dw.pbl数据通信窗口: sjtx_w.pbl数据通信函数及其它: sjtx_func.pbl各种对象应分类分别存放在相应的pbl中。
第三章PB应用对象与面向对象编程基础
3.2创建应用对象
3.2.3 创建模板应用对象
应用对象与面向对象技术基础
使用PB的向导来创建更为复杂的应用程序,在创建 工过程中,向导会一步一步地收集诸多我们将要创 建的应用对象的信息,然后指导我们生成所需的应 用对象。 利用向导完成所有的工作后,PB将给我们创建一个 新的目标文件,一个新的应用库,一个新的应用对 象,以及多个其它的对象。 我们完全可以不使用向导就可以完成相同的功能, 但我们必须手动创建一个应用对象以及许多其它的 重要对象。
3.3应用对象属性
Freeform风格 的的字段标签
应用对象与面向对象技术基础
应用程 序图标
PB全局变量
数据窗口检索 出的数据 窗口、数据窗 口的静态文本
数据窗口的字 段标签
10
3.3应用对象属性
3.3.2 工具条属性
FrameBar工具 栏浮动标题 SheetBar工具栏 浮动标题 工具栏快捷菜 单显示文本 工具栏按钮显 示文本
14
8
3.3应用对象属性
3.3.1 常规属性 应用对象的属性 在应用对象画板中设 置,它的属性一般有 具有全局性。
显示名称,显示在使用了 对象的对话框窗体上
状态栏的显示信息,即 微帮助信息,不设置采 用Ready
应用对象与面向对象技术基础
应用对象名称, 不能修改
数据窗口对象的对话框 中的标题
9
3.3.2 附加属性
7
3.2创建应用对象
3.2.4 移植已有应用对象
应用对象与面向对象技术基础
在PB8 以前的各个版本中,没有目标(Target) 概念,应用库便是最高层的组织者了,而不象 PB8应用库的上层还有目标和工作区。 在已有的工作区中选择已有的应用对象后,PB自 动转化应用程序的某些格式,以便该应用对象能 在PB8中使用。 移植前应做好备份,移植后的应用库不能在先前 的版本中运行。 某些应用库可能会移植不成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程规范(PB)1简介1.1简介这个文档描述了用于编写稳定、可靠的PowerBuilder应用程序的一些标准、约定和准则。
他们基于合理的,经过证实的一些使代码容易理解、维护和增强的软件工程的原则。
另外,遵循这些标准,你作为一个PowerBuilder程序员的生产力将有一个显著的提高。
一些经验证明,花时间在项目的开始写出高质量的代码,可以使在后来的开发过程中容易修改它,从而事半功倍。
最后,遵循这一系列编码规范,可以使一个开发团队更好地保持一致性,最终必将极大地提高团队的生产力。
1.2最初的准则和最终的准则当你无法找到一些你需要的原则或准则时,或者它们很明显地不适用,或者其它的一些情况下,请使用常识,按照一些基本的原理去作。
这个原则凌驾于其他原则。
2命名规范2.1一般性约定1.使用英文或汉语拼音的全称去准确地描述各种对象、变量例如,ls_UserName (用户名) ,ldc_GrandTotal(总计)等等。
尽管x1,y1这样的名称很容易拼写,因为它们很短,但是他们不可能明确地提示名称的含义,将导致代码难以理解、维护和改进。
2.使用大小写混合的方式命名3.以合适的方式使用缩写例如ll_RownNmber,简写为ll_RowNum是可以理解的,但是li_ReturnCode简写为li_rc就不一定被别人看懂,所以应该以尽量保守的态度使用缩写,在更多的时候使用全称,或者建立常用缩写的对照表。
4.避免太长的名称,尽量限制在15个字母以内长名称虽然很容易懂,但特别长将导致拼写时经常出错。
5.不要在第一个字母和最后一个字母使用下划线6.保持命名的一致性。
相关的东西应给以相关的名字,以说明他们的关系和差异2.2具体约定2.2.1对象命名规范<前缀>_名称注:名称为英文,新建对象必须加注释(菜单对象可例外)。
一般情况下,菜单对象的名称与其所属窗口的名称一致。
例子:w_master , m_master , d_cig_cdu_tvs is the TreeView visual user objectu_dw is the DataWindow visual user objectn_cst_dwsrv is the custom class user object for DataWindow servicesn_tr is the transaction standard class user object and is in the extension level2.2.2变量范围命名规范<范围><数据类型>_变量名范围:对于标准数据类型:例子:as_unitcode 表示事件或函数的输入参数,string类型idc_val 表示实例变量,decimal 类型li_row 表示局部变量,integer 类型gd_firstday 表示全局变量,date类型对于常用参照数据类型(reference variables):例子:datastore lds_unitDataWindowChild ldwc_cigwindow lw_code注:1) 尽量避免使用全局变量。
2) 全局变量和实例变量必须加注释(说明该变量在何处设置和使用);重要的局部变量加注释4)全局变量使用具有说明性(名字足够长)的名字,局部变量用短名字5)按常规方式使用的局部变量可以采用极短的名字。
例如:用i、j作为循环变量例如:在window的open()事件中对统计日期id_date赋值,在dw_unit.itemchanged()和cb_ok.clicked()中使用,则定义如下//Set: open//Use: dw_unit.itemchanged, cb_ok.clickedDate id_date //统计日期2.2.3函数命名规范<前缀>_ FunctionName例子:wf_GetTime, of_ GetTime, f_ GetTime注:不使用全局函数(使用用户对象封装);函数名采用动作性的名字,后面可以跟着名词2.2.4窗口中控件命名规范<前缀>_名称前缀参照PowerBuilder的缺省规定对于下拉数据窗口,使用如下命名方式:d_dddw_ + name另外,如果同类控件在窗口中出现两次以上,名称必须为英文,不能是数字。
例如:在同一窗口中有两个CommandButton,不能命名为cb_1和cb_2,,必须是有意义的名称,如cb_ok和cb_cancel。
2.2.5数据库对象命名规范数据库对象包括表、视图、触发器及存储过程等库名: 英文前三个字母表命名:小写,应尽量用英文,也可用拼音,视情况而定;表名前加比较短小的业务名称,推荐用两位汉语拼音简写(例如,储运,cy) ;主从表的命名,主表名_s;_s1;_s2;代码表后面加_cd;表名尽量短小精焊视图命名:v_名称,名称为表名或主要表名触发器命名:ti_表名(insert trigger)td_表名(delete trigger)tu_表名(update trigger)tui_表名,tud_表名,tid_表名,tuid_表名(复合trigger)存储过程:sp_名称列名:小写,连接符使用下划线;字符型尽量用varchar,尽量加长。
常用列名或列名后缀:代码:_cd;无意义:_id;名称:_nm;金额:_mny;数量:_qty;日期:_dt;标志:_mark;人:_er或_or;类型:_tp;审核人:verifier;部门:_dept;编号:_no;计量单位:jldw;大小:sz;重量:wg;备注:rem;率:_rate;制单人:maker;时间:_tm;开始时间:start_dt;结束时间:end_dt;批号:bat_no;周期:cycle3表达式和语句1.使用缩行显示程序的结构。
采用一种一致的缩行风格,是使程序呈现出结构清晰的最省力的方法2.使用表达式的自然形式。
例如:IF (Not (ldc_BlockId < ldc_ActBlks) Or Not (ldc_BlockId >= ldc_ActBlks)) Then在上面的语句中两个测试都用到了否定,而他们是不必要的,应该改变关系运算符的方向,是测试变成肯定的:IF ((ldc_BlockId >= ldc_ActBlks) Or (ldc_BlockId < ldc_ActBlks)) Then3. 用加括号的方式排出二义性。
括号表示分组,即使有时并不必要,加了括号也可能把意图表示的更清楚,上面的例子中,内层括号就不是必须的。
4. 分解复杂的表达式。
5. 当心副作用。
像++ 这一类的运算符具有副作用,它们除了返回一个之外,还将隐含地改变变量的值。
4界面设计4.1一般性约定界面设计是软件设计中很重要的一部分,一些优秀的系统大都拥有优秀的界面设计,一些大公司的界面设计往往精确到像素。
但是,很多人对优秀界面的理解就是“漂亮”甚至说“花哨”,而忽视了更重要的东西,这就有些不妥了。
那么一个优秀的设计应该具有什么样的特征呢?1、功能性界面设计必须符合功能的需要,这个是最重要的,界面是用户使用系统的途径,优秀的界面必须与功能的需求相统一。
应该重点突出,结构清晰,布局具有整体感。
用类似winamp的用户界面来处理数据应用的界面,就有点不伦不类了。
2、导航优秀的界面应该给用户舒适的导航,用户可以很容易找到相应的功能,或者可以引导用户正确的操作,避免错误。
重点的元素放在醒目的地方。
3、友好尽量不要出现用户看不明白的提示、专业术语或错误信息。
4、操作性一个优秀的界面设计,必须具有良好的操作性,符合大多数人的操作习惯,对于特殊应用,可快速操作也很重要。
5、时尚性密切注意流行界面的发展方向,当然也不是盲目跟从。
比如win98时代就不要再开发win32风格的界面了。
那么开发时应注意什么呢?1、整个系统应该风格统一,不要前后矛盾,比如前一个窗口中红色代表错误,在接下来的提示中又用红色来表示重要信息。
2、不要使用让用户产生歧义的图标、图形或文字,比如有人在退出按钮上写上“逃离”,又如,保存按钮写“就这样吧”等等。
3、尽量不要使用activeskin之类的换肤软件,其一这些皮肤其实并不美观,其二增加了系统出错机会,加大系统开发复杂度。
4、合理的结构设计,可能的情况下,将界面设计与业务逻辑独立开来,尽量不要将业务逻辑写到界面之中,比如有人在“确定”按钮里写了几百行的代码,所有功能都在里面了。
5、导航深度不要超过3层,有的设计往往要好几级菜单下才能找到相应的功能。
还有的功能必须要层层打开n个窗口后,才在一个角落里发现打开它的按钮。
6、不要使用太扎眼的元素,比如颜色,线条等。
例如一个使用亮绿色的提示窗口会让用户睁不开眼睛7、窗口元素布局要整齐划一,比如即使用不了那么长的文本框,也要使它与上面的文本框一样长8、不要在界面上出现可有可无的东西,有人用了一半的窗口面积描述这个窗口各个按钮的使用方法,此举纯属画蛇添足,因为一个熟练的用户闭着眼睛都知道下一步该按哪个键,当然面向大众的软件例外。
4.2 具体约定1、界面(包括Window和DataWindow)应在800*600分辨率下设计(同时应支持其它分辨率);整个系统一般使用9号宋体,个别情况(如标题)用大字体(14号宋体)2、同一窗口界面中颜色不能超过4种3、DropDownDataWindow的风格用Tabular,白底黑字,下拉后不能显示所有记录时,必须加垂直滚动条;grid 风格的DataWindow不要用下凹和灰底,在"Summary" 段加合计,显示共多少条记录等信息4、CommandButton 不能出现在左面和上面,不要紧贴窗口边界;普通CommandButton大小为352*92。
当与SingleLineEdit等其它控件合用时(如:在SingleLineEdit输入查询,在右面有一查询按钮),可以放在上面,并用Group围往5、不能含有无用的隐藏控件;不要用隐藏的datawindow, 用datastore代替6、按MDI风格设计,除主窗口上的菜单可带有toolbar外,其他窗口少用toolbar7、多个RadioButton(其中一个必须为Checked)和CheckBox用Group围住,点击后不能出现打开窗口等类似按钮的动作8、TabPage要有图标10、所有的日期用yyyy-mm-dd格式11、DataWindow的BorderStyle为StyleLowered,主细窗口之间的距离不超过20 PBU,宽高的设置应尽量避免横竖滚动条的同时出现12、窗口中的左上角和右下角的控件距窗口边界的距离为X:64PBU,Y:56PBU(14个Pixels)13、FreeForm类型的录入数据窗口,Text和Column的高度为56 PBU,一对Text和Column,之间的距离为0;Text后加单字节冒号“:”,右对齐;Column加下划线,左对齐;不可录入的Text和Column的Taborder为0,颜色为Navy14、Grid类型的录入数据窗口,Header和Detail的高度为84;标题不加粗,中间对齐;最左列加“行号”(如果无行号字段,用计算域getrow()),中间对齐;所有数字列右对齐,其它列左对齐,都为白底黑字;小计、合计的颜色为Navy,中间对齐,放在下面。