Brio编程规范
1 引言
本文档只对系统前端展现工具的编程风格进行规范。cncReport采用Brio公司的前端展现工具Brio Query系列,本文档的规范对象为Brio Query Designer工具。
2 BQY文件
Brio以Bqy文件的形式提供用户分析的界面,并展现分析的结果,文件的扩展名为bqy。Bqy文件与数据源的连接使用连接文件,文件扩展名为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标识。变量类型以s,i,b,o表示字符串变量、数值变量、布尔变量和类实体。
例:
gsLatnName //全局字符串变量
liTotalNum //局部数值变量
l 变量描述中每个英文单词首字母大写(循环变量除外)
l 局部变量以var进行声明,全局变量不以var进行声明,例:
gsLatnName =’广州本地网’ //全局字符串变量
liTotalNum =0 //局部数值变量
l 全局变量在文档的OnStartUp()事件中声明
l 所有变量在声明时必须赋初始值
l 变量类型在代码作用范围内唯一
l 重要变量声明时要进行注释
l 循环变量:i,j,k,…
4.2 函数命名
l 函数名采用英文命名,函数名=函数范围标识 +返回值类型+函数描述
l 函数范围标识表明是否为全局函数,全局函数以g标识,局部函数以l标识。返回值类型以v,s,i,b,o表示空类型变量、字符串变量、数值变量、布尔变量和类实体。
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 每个关键字(Select、update、from、and、set等)单独一行.
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 象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
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 模块化时用面向对象的观点设计模块接口,包括函数接口和变量接口
作为一种接口,尽量少用全局变量发表评论
- 浏览: 63773 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最新评论
-
JavaEye之路
我在这,随便说点啥,博客,论坛,都说我应该是一个新手的帖子。不过我还是呆在这。反 ...
-- by saharabear -
我是穷忙族
-- by lbyzx123 -
JavaEye之路
javaeye目前的问题: 1,缺乏一个好的盈利模式,商业化运作 2,技术定位 ...
-- by kimmking -
JavaEye之路
我也很喜欢JavaEye,比CSDN好 CSDN太杂了
-- by lovefly_zero -
JavaEye之路(2)
挑战频道 -- 已经有问答频道,可以随意提问题,让大家来解决最近频道 -- Ja ...
-- by ouspec






评论排行榜