2008-04-01

Brio编程规范

1  引言

本文档只对系统前端展现工具的编程风格进行规范。cncReport采用Brio公司的前端展现工具Brio Query系列,本文档的规范对象为Brio Query Designer工具。

2  BQY文件

BrioBqy文件的形式提供用户分析的界面,并展现分析的结果,文件的扩展名为bqyBqy文件与数据源的连接使用连接文件,文件扩展名为oce。连接文件分为数据源连接与数据源元连接,数据源连接提供对所要分析的数据源的接口,数据源元连接负责解释数据源。

2.1  Bqy文档

l        文档名称采用中文命名,文档名有明确含义,说明所属模块,分析主题。

例:

收入报告单及补充资料.bqy

收入报告单及补充资料_汇总.bqy

l        文档保存选项采用Brio缺省选项。

2.2  连接文件

统一的连接文件规范可使Brio文档在不同开发者的机器使用。

l        项目组采用统一的数据源连接文件和数据源元连接文件。

l        连接文件与数据源的连接采用ODBC连接。

l        ODBC数据源命名统一使用cncReport

l        数据源连接文件统一使用cncReport.oce

l        数据源连接文件统一存放在C:\cncReport\oce\目录下。

3  BQY文档制作

3.1  Bqy文档区名命名

l        Bqy文档区名采用中文命名,区名前缀+区类别,区名前缀有明确含义

l        区类别包括:查询、结果、EIS、旋转透视表、表等。

例:

帐目统计查询

帐目统计结果

报告单EIS

报告单旋转透视表

3.2  EIS控件(图形)命名

l        EIS控件(图形)命名:采用英文命名,控件(图形)前缀+控件(图形)描述

l        控件(图形)前缀说明控件类型,全小写

l        控件(图形)描述表明控件含义,每个英文单词首字母大写

l        命令按钮:以btn打头,例:btnQuery

l        单选按钮:以rb打头,例:rbType

l        复选框:以cb打头,例:cbUser

l        列标框:以lb打头,例:lbLatn

l        下拉列表:以dd打头,例:ddCycle

4  变量与函数命名

4.1  变量命名

l        变量名采用英文命名,变量名=变量范围标识 + 变量类型 + 变量描述

l        变量范围标识表明是否为全局变量,全局变量以g标识,局部变量以l标识,函数参数以a标识。变量类型以sibo表示字符串变量、数值变量、布尔变量和类实体。

例:

gsLatnName //全局字符串变量

liTotalNum   //局部数值变量

l        变量描述中每个英文单词首字母大写(循环变量除外)

l        局部变量以var进行声明,全局变量不以var进行声明,例:

gsLatnName =’广州本地网  //全局字符串变量

liTotalNum =0  //局部数值变量

l        全局变量在文档的OnStartUp()事件中声明

l        所有变量在声明时必须赋初始值

l        变量类型在代码作用范围内唯一

l        重要变量声明时要进行注释

l        循环变量:ijk

4.2  函数命名

l        函数名采用英文命名,函数名=函数范围标识 +返回值类型+函数描述

l        函数范围标识表明是否为全局函数,全局函数以g标识,局部函数以l标识。返回值类型以vsibo表示空类型变量、字符串变量、数值变量、布尔变量和类实体。

l        函数描述中每个英文单词首字母大写

l        函数描述一般使用动+宾的形式命名

l        全局函数在文档的OnStartUp()事件中声明

l        函数声明时要进行注释

函数命名举例:

1:全局函数

/*F-------------------------------------------------------------------------------

函数名:gvSetToolbarsStatic

功能描述:设置菜单栏,导航条的状态( 显示与隐藏 )

输入参数:abMenuShow:布尔型,是否显示菜单栏

abNavigatorShow:布尔型,是否显示导航条

输出参数:无

-------------------------------------------------------------------------------*/

function gvShowOrHide( abMenuShow, abNavigatorShow )

{

   ActiveDocument.ShowCatalog = false;

   ActiveDocument.ShowSectionTitleBar = false;

   ActiveDocument.ShowStatusBar = false;

   Application.ShowMenuBar = abMenuShow;

   Toolbars["格式"].Visible = false;

   Toolbars[""].Visible = false;

   Toolbars["标准"].Visible = false;

   Toolbars["导航"].Visible = abNavigatorShow;

}

2:全局函数

/*F-------------------------------------------------------------------------------

函数名:gvConnectDB

功能描述:连接数据库

输入参数:aoMyConnect:数据模型连接

输出参数:无

-------------------------------------------------------------------------------*/

function gvConnectDB ( aoMyConnect )

{

  var AppName = Application.Name.toLowerCase()

  if ( !MyConnect.Connected ) {

    aoMyConnect.SetPassword("SQL")

    aoMyConnect.Connect()

  }

}

3:局部函数

//F 计算选择的本地数目

function liGetSelectedLatnNum()

{

var liRet;

 

  return liRet;

}

5  注释

l        对特殊算法,非标准用法,及不可移植语句,要加以注释l        变量、函数要加以注释

l        在事件内各功能模块,如循环、流程的各分支等,尽量使用注释

l        行内注释要简短,较长的注释使用注释箱

6  编程风格

6.1  注释

l        变量注释

4

gsLatnName //全局字符串变量

liTotalNum   //局部数值变量

l        事件头注释

/*E-----------------------------------------------------------------------

Event Description

---------------------------------------------------------------------------*/

l        函数头注释

    /*F---------------------------------------------------------------------------

    Function Description

    ---------------------------------------------------------------------------*/

l        代码块注释

    /*B---------------------------------------------------------------------------

Block Description

---------------------------------------------------------------------------*/

6.2  缩进

l        函数体、过程体、循环体(for,while,do)、条件判断体(if)和条件选择(switch,case)向内缩进两空格,同层次的代码在同层次的缩进层上,尽量少用while语句

l        在缩进的同时,注意功能块的划分,把不同的功能块之间用一个空行隔开,并注释。

缩进示例:

6                

if ( condition ) {

statements

} else {

  statements

}

7

for ( exp1; condition; exp2 ) {

statements

}

8

switch ( exp ) {

  case value1:

    statements

    break

  case value2:

    statements

    break

  ……

  default:

    statements

    break

}

6.3  SQL语句风格

CncReport的程序和文档编写中会大量出现SQL

l        每个关键字(Selectupdatefromandset等)单独一行.

l        关键字右对齐。字段左对齐。

l        同一行不超过3 个字段。

l        多个表操作统一使用别名a,b,c(小写)。

例:

select distinct a.from_id

  from tbs_cdr_bill_rec a, tbs_cycle_rec b, tbs_product c
 where a.latn_id = c.latn_id
   and a.product_id = c.product_id
   and b.cycle_id = 13
   and a.begin_time between b.begin_date and b.end_date
   and c.user_type_id = 4
   and a.call_type in (0, 1, 2, 3, 4)
 order by a.from_id

6.4  其它风格

l        ifforwhile等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。

l        函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。

l         ‘(’向后跟 一空格,‘)’前保留一空格。

l        ‘,’、‘;’向前紧跟,紧跟处不留空格。

l        ‘,’之后要留空格,如Function( x, y, z )。如果‘;’不是一行的结束符号,其后要留空格,如for ( initialization; condition; update )

l        二元操作符的前后应当加空格。

l        一元操作符如“!”等前后不加空格。

l        象“[]”、“.”、“->这类操作符前后不加空格。

l        对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i<10; i++)if ((a<=b) && (c<=d))

7  模块化

l        尽量利用其他人的现成模块

l        对重复实现三遍的功能模块化,将它写成通用函数,必要时向开发组成员发布

l        模块化时用面向对象的观点设计模块接口,包括函数接口和变量接口

作为一种接口,尽量少用全局变量
评论
发表评论

您还没有登录,请登录后发表评论

Azi
搜索本博客
存档
最新评论