Domino代码优化、编码规范

上传人:油条 文档编号:116917823 上传时间:2019-11-17 格式:PPT 页数:32 大小:112KB
返回 下载 相关 举报
Domino代码优化、编码规范_第1页
第1页 / 共32页
Domino代码优化、编码规范_第2页
第2页 / 共32页
Domino代码优化、编码规范_第3页
第3页 / 共32页
Domino代码优化、编码规范_第4页
第4页 / 共32页
Domino代码优化、编码规范_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Domino代码优化、编码规范》由会员分享,可在线阅读,更多相关《Domino代码优化、编码规范(32页珍藏版)》请在金锄头文库上搜索。

1、Domino应用开发规范 2004-04-03 石振勇 表单规则: ?11 表单命名规则 ?表单名称统一用中文,尽量能展示该表单的功能和意图. ?如果表单名无法展示其意图,或者表单名必须用英文,或者需要 对表单做些其他说明,则填写表单的备注. ?必须填写表单的别名.别名的可以用英文单词组合或汉语拼音. 如果用拼音,在能够容忍的长度内,尽量用全拼。规定:如果名 称全拼在16个字之内,用全拼并且每个字的首字母要大写。 如果超过16个字,则全用每个字的首字母大写。 ?表单名无需加”fm”的前缀。但可以按其功能类别加前缀,比 如用于区分“核心表单和非核心表单”的前缀 ?对于不需要用来创建文档的表单,名

2、字用括弧括起来,用以 将后台表单和前台表单区分开,如功能性的表单作为后台表 单。 表单规则: ?12 表单的Js Header ? ?表单的Js Header中的函数应尽可能的少。只保留仅与本表单 相关的特殊的Js函数。 ?规定:放在页面里的js函数包要在页面中写明每个包中的函 数名称,方便查找和查看。 ? 资源库中的js函数包同时要有同名的说明文件。还要求有 一个总体说明文件。 ?13 表单的On KeyDown事件 ?可以在此函数中限制用户的一些按键,例如: ?/防止用户CTRL+N,避免繁盛保存冲突 ?if(event.keyCode=78 表单规则: ? 14 表单的OnLoad ?

3、Onload中的代码要尽可能的简短,不要写具体的 实现代码,只写被调用的函数体即可,目的是为了 代码清晰简洁,便于维护。例如: ? /打开前设置相关状态域 ? ondocload(); ? /装载意见 ? LoadOpinion(); ? /修改附件链接 ? ModifyAttachLink(); ? /上载附件 ? AddAttach(); 域的规则: ? 21 域的命名规则 ? 可以用英文单词组合或汉语拼音.如果用拼音,在能 够容忍的长度内,尽量用全拼。规定:首字母大写 用全拼。 ? 域名不要加用以说明域的类型属性的前缀。但可以 按其功能类别加前缀,比如用于区分“控制域、数 据域、Html

4、用的域”的前缀 ? 域名可以加其功能类型的前缀,用于功能类型有限 时。当功能类型几十上百种时,就没意义了。 域的规则: ? 22 文本域容量限制问题 ? 除非一个NotesItem需要在视图或文件 夹中显示,后台创建的notesItem一定 要将其 IsSummary属性置为False 视图的规则 ?31 视图的命名规则 ?视图名称统一用中文,尽量能展示该视图的功能和意图. ?如果视图名无法展示其意图,或者视图名必须用英文,或者需要 对视图做些其他说明,则填写视图的备注。规定:如果视图本 身是被调用的在备注中必须写明被谁调用。 ?必须填写视图的别名.别名的可以用英文单词组合或汉语拼音. 如果用

5、拼音,在能够容忍的长度内,尽量用全拼. 规定:如果名 称全拼在16个字之内,用全拼并且每个字的首字母要大写。 如果超过16个字,则全用每个字的首字母大写。 ?视图名无需加”vw”的前缀. ?对于不需要用于前台显示的视图,名字用括弧括起来成为隐 藏视图,用以将后台视图和前台视图区分开 视图的规则 ? 33 视图的列 ? 一般应填写列的“标题”属性,用于辨别该列 ? 视图的列的内容的字体应统一设置,一般字号设置 为9,字体为宋体,颜色根据客户需要设置,风格 应协调统一。 ? 视图的列公式尽可能的简洁,减少计算量。 ? 避免使用时间相关的列公式, 比如Now, Created, Modified.

6、? 列尽可能不排序 ? 删除所有不必要的列 视图的规则 ? 34 视图的选择公式 ? 避免使用复杂的视图选择公式 ? 视图选择公式避免使用与时间、当前 用户相关的函数或命令,如 now,Today,UserName都是应该 避免使用的 视图的规则 ? 35 嵌入视图 ? 视图作为“嵌入元素”嵌入页面或表单 时,“要显示的行”属性的数字尽量设 置的少些,以提高嵌入视图的打开速 度。规定:初始值设为20行,如果用 户提出速度问题,可以改为10行,作 为第一解决方案。 代理的规则 ? 41代理的命名规则 ? 代理的名字可以用英文单词组合或汉语拼 音.如果用拼音,在能够容忍的长度内,尽量用 全拼. 规

7、定:如果名称全拼在16个字之内, 用全拼并且每个字的首字母要大写。如果 超过16个字,则全用每个字的首字母大写 。 ? 必须填写代理的备注,对代理进行详细的 说明。 ? 代理名加用于标明其是否为核心代理的前 缀. 代理的规则 ? 42 代理的其他规则 ? 对于定时执行的代理,在该数据库正式启 用前,或者该定时代理暂时不使用时,取 消代理前的复选框,以暂时禁用该代理。 ? 对于那些只为管理者在客户端使用的代理 ,应设为“私有代理”,防止为他人误用 ? 代理 “Sub Initialize” 中的代码要尽可能的 简短,不能超过40行。多个代理中或和其 他设计元素中共享的代码,应独立到 “scrip

8、t库” 中。 代理的规则 ? 43 同时运行代理 ? 缺省的,domino同一时刻只执行一个web 代理(串行), 配置domino并行运行web 代理能够提高应用的答复时间。 ? 配置并行运行代理,需要设置服务器文档 中HTTP页下的“是否同时运行web代理”为 “是”或者在notes.ini中设置这一行 “DominoAsynchronizeAgents=1” 代理的规则 ?44防止资源冲突 ?同时运行web代理时,为防止资源冲突,要使用用加锁机制 ,例如: ?SharesResources = docCgi.UNID(0) + “save“ ?lockID = Createlock(Sh

9、aresResources) ?gotLock = Codelock(lockID) ?= ?/你的代码 ?= ?If (gotLock) Then ?releaseLock = Codeunlock(lockID) ?dseleteLock=Destroylock(lockID) ?End If Script库的规则 ? script库中要放功能相近的代码,以达 到“高内聚”的目的。也便于查看代码 。 ? Script 库的开头区域要有对整个Script 说明的注释 LotusScript代码规则 61 函数的长度 ? 单个函数中的代码行数不要超过40行 。这是一个最重要的规则。 Lotus

10、Script代码规则 ?62 函数的命名 ?让我们看一些错误的命名: ?PersonLog 更新人员日志 ?PeopleOut 打印人员外出的信息 ?RemoveUser'从文档的当前环节和当前处理人中删除指定处 理人 ?RenyuanJB计算人员的级别 ?621 函数的名字用英文单词组合。 ?622 函数名字的语法结构,一般应采用“动宾”等动词开头 的结构 ?623 函数的名字在能容忍的程度内,尽可能的长,以更 好的揭示意图 ?624 函数的名字应和函数的功能一致,不可超出或小于 函数的功能,或者“风马牛不相及”。 LotusScript代码规则 ?63参数的规则 ?6.3.1参数名

11、字要有意义 ?例如: ?sub SetValue(width, height) 良好的风格 ?sub SetValue(x,y)不好的风格 ?例如编写字符串拷贝函数StringCopy,它有两个参数。如果把参数 名字起为str1和str2,例如function StringCopy( str1, str2) ?那么我们很难搞清楚究竟是把str1拷贝到str2中,还是刚好倒过来。 可以把参数名字起得更有意义,如叫strSource和strDestination。这 样从名字上就可以看出应该把strSource拷贝到strDestination。 ?632如果输入参数以值传递的方式传递 ,则宜改用

12、“ByVal argument”方式来传递,这样可以防止作为参数的变量值被修改, 同时又可以省去临时变量的构造过程,从而提高效率。 ?633 避免函数有太多的参数,参数个数尽量控制在5个以内。 LotusScript代码规则 ? 64 函数的返回值 ? 要书写函数的返回值类型 ? 函数的返回值要与函数的名字相配合 ? 函数的正常返回值和错误返回值的区 分 ? 函数尽量不要通过参数传递函数的返 回值,除非有多个不相干的返回值 LotusScript代码规则 ? 65 函数的职责 ? 函数的职责要单一,如果觉得职责的“ 粒度”不好把握,可以先用自然语言写 出总控模块(可以作为注释),针对 自然语言

13、的每句话即可作为一个函数 。 LotusScript代码规则 ? 66 变量的规则 ? 每个模块必须使用 option declare 这个语句 来强制要求所有的变量必须定义 ? 变量的定义后面要书写该变量的注释 ? 变量的作用范围尽量少用全局,作用范围 越小越好 ? 变量尽量都要定义类型 ? 少使用Variant类型 LotusScript代码规则 ? 67嵌套的深度和广度 ? 条件语句的嵌套不能超过3层。 ? 循环语句的嵌套不能超过3层。 ? 两者混合的嵌套也不能超过3层。 ? 条件结构的开始和结束语句之间的 代码不能超过20行。 ? 循环结构的开始和结束语句之间的 代码不能超过20行。

14、LotusScript代码规则 ?将Redim的使用降到最少,下面的片断A比片断B快20% ?For i = 1 to 10000 ?If (i iMax) Then ?iMax = iMax + 100 ?Redim Preserve sArray(1 To iMax) ?End If ?sArray(i) = “” ?Next ?Fragment B ?For i = 1 to 10000 ?Redim Preserve sArray(1 To i) ?sArray(i) = “” ?Next ?使用GetNextDocument代替GetNthDocument LotusScript代码

15、规则 ?68 其他规则 ?使用For循环代替Do循环 ?遍历数组元素时,使用Forall代替For ?避免使用不必要的数组,例如:片断A比片断B快一倍。 ?片断 A ?for i=1 to 100 ?sum = sum + x(i) ?next ?t(1)=sum ?片断 B ?for i=1 to 100 ?t(1)=t(1)+x(i) ?Next LotusScript代码规则 ? 69 禁止硬编码 ? 任何将数据库文件名和路径名 直接写 在程序中的,都是硬编码。 ? 任何取当前数据库同路径作为目标数 据库路径的做法,都是硬编码 公式规则 ? 尽可能不用或少用DbColumn, DbLoo

16、kup ? 尽可能使用视图列序号而不是域的名 字作为DbColumn or DbLookup 的参数 ? 使用DbColumn, DbLookup.时, 尽量开启“缓存”参数 图片规则 ? 所有的图片尽量放在 文件系统上,使 用来引用,这样既可以利用 浏览器端的缓存,也可以省去Domino 对图片的转换 JavaScript ? 具有通用性的,可以提取的js函数独 立到一个单独的资源数据库中。 注释规则 ?101 函数体注释 ?针对每个函数,按照下面的模板进行注释 ?'''''''''''''

17、;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号