Domino代码优化、编码规范-石振勇_第1页
Domino代码优化、编码规范-石振勇_第2页
Domino代码优化、编码规范-石振勇_第3页
Domino代码优化、编码规范-石振勇_第4页
Domino代码优化、编码规范-石振勇_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Domino应用开发规范 2004 04 03石振勇 表单规则 1 1表单命名规则表单名称统一用中文 尽量能展示该表单的功能和意图 如果表单名无法展示其意图 或者表单名必须用英文 或者需要对表单做些其他说明 则填写表单的备注 必须填写表单的别名 别名的可以用英文单词组合或汉语拼音 如果用拼音 在能够容忍的长度内 尽量用全拼 规定 如果名称全拼在16个字之内 用全拼并且每个字的首字母要大写 如果超过16个字 则全用每个字的首字母大写 表单名无需加 fm 的前缀 但可以按其功能类别加前缀 比如用于区分 核心表单和非核心表单 的前缀对于不需要用来创建文档的表单 名字用括弧括起来 用以将后台表单和前台表单区分开 如功能性的表单作为后台表单 表单规则 1 2表单的JsHeader表单的JsHeader中的函数应尽可能的少 只保留仅与本表单相关的特殊的Js函数 规定 放在页面里的js函数包要在页面中写明每个包中的函数名称 方便查找和查看 资源库中的js函数包同时要有同名的说明文件 还要求有一个总体说明文件 1 3表单的OnKeyDown事件可以在此函数中限制用户的一些按键 例如 防止用户CTRL N 避免繁盛保存冲突if event keyCode 78 表单规则 1 4表单的OnLoadOnload中的代码要尽可能的简短 不要写具体的实现代码 只写被调用的函数体即可 目的是为了代码清晰简洁 便于维护 例如 打开前设置相关状态域ondocload 装载意见LoadOpinion 修改附件链接ModifyAttachLink 上载附件AddAttach 域的规则 2 1域的命名规则可以用英文单词组合或汉语拼音 如果用拼音 在能够容忍的长度内 尽量用全拼 规定 首字母大写用全拼 域名不要加用以说明域的类型属性的前缀 但可以按其功能类别加前缀 比如用于区分 控制域 数据域 Html用的域 的前缀域名可以加其功能类型的前缀 用于功能类型有限时 当功能类型几十上百种时 就没意义了 域的规则 2 2文本域容量限制问题除非一个NotesItem需要在视图或文件夹中显示 后台创建的notesItem一定要将其IsSummary属性置为False 视图的规则 3 1视图的命名规则视图名称统一用中文 尽量能展示该视图的功能和意图 如果视图名无法展示其意图 或者视图名必须用英文 或者需要对视图做些其他说明 则填写视图的备注 规定 如果视图本身是被调用的在备注中必须写明被谁调用 必须填写视图的别名 别名的可以用英文单词组合或汉语拼音 如果用拼音 在能够容忍的长度内 尽量用全拼 规定 如果名称全拼在16个字之内 用全拼并且每个字的首字母要大写 如果超过16个字 则全用每个字的首字母大写 视图名无需加 vw 的前缀 对于不需要用于前台显示的视图 名字用括弧括起来成为隐藏视图 用以将后台视图和前台视图区分开 视图的规则 3 3视图的列一般应填写列的 标题 属性 用于辨别该列视图的列的内容的字体应统一设置 一般字号设置为9 字体为宋体 颜色根据客户需要设置 风格应协调统一 视图的列公式尽可能的简洁 减少计算量 避免使用时间相关的列公式 比如 Now Created Modified 列尽可能不排序删除所有不必要的列 视图的规则 3 4视图的选择公式避免使用复杂的视图选择公式视图选择公式避免使用与时间 当前用户相关的函数或命令 如 now Today UserName都是应该避免使用的 视图的规则 3 5嵌入视图视图作为 嵌入元素 嵌入页面或表单时 要显示的行 属性的数字尽量设置的少些 以提高嵌入视图的打开速度 规定 初始值设为20行 如果用户提出速度问题 可以改为10行 作为第一解决方案 代理的规则 4 1代理的命名规则代理的名字可以用英文单词组合或汉语拼音 如果用拼音 在能够容忍的长度内 尽量用全拼 规定 如果名称全拼在16个字之内 用全拼并且每个字的首字母要大写 如果超过16个字 则全用每个字的首字母大写 必须填写代理的备注 对代理进行详细的说明 代理名加用于标明其是否为核心代理的前缀 代理的规则 4 2代理的其他规则对于定时执行的代理 在该数据库正式启用前 或者该定时代理暂时不使用时 取消代理前的复选框 以暂时禁用该代理 对于那些只为管理者在客户端使用的代理 应设为 私有代理 防止为他人误用代理 SubInitialize 中的代码要尽可能的简短 不能超过40行 多个代理中或和其他设计元素中共享的代码 应独立到 script库 中 代理的规则 4 3同时运行代理缺省的 domino同一时刻只执行一个web代理 串行 配置domino并行运行web代理能够提高应用的答复时间 配置并行运行代理 需要设置服务器文档中HTTP页下的 是否同时运行web代理 为 是 或者在notes ini中设置这一行 DominoAsynchronizeAgents 1 代理的规则 4 4防止资源冲突同时运行web代理时 为防止资源冲突 要使用用加锁机制 例如 SharesResources docCgi UNID 0 save lockID Createlock SharesResources gotLock Codelock lockID 你的代码 If gotLock ThenreleaseLock Codeunlock lockID dseleteLock Destroylock lockID EndIf Script库的规则 script库中要放功能相近的代码 以达到 高内聚 的目的 也便于查看代码 Script库的开头区域要有对整个Script说明的注释 LotusScript代码规则 6 1函数的长度单个函数中的代码行数不要超过40行 这是一个最重要的规则 LotusScript代码规则 6 2函数的命名让我们看一些错误的命名 PersonLog 更新人员日志PeopleOut 打印人员外出的信息RemoveUser 从文档的当前环节和当前处理人中删除指定处理人RenyuanJB 计算人员的级别6 2 1函数的名字用英文单词组合 6 2 2函数名字的语法结构 一般应采用 动宾 等动词开头的结构6 2 3函数的名字在能容忍的程度内 尽可能的长 以更好的揭示意图6 2 4函数的名字应和函数的功能一致 不可超出或小于函数的功能 或者 风马牛不相及 LotusScript代码规则 6 3参数的规则6 3 1参数名字要有意义例如 subSetValue width height 良好的风格subSetValue x y 不好的风格例如编写字符串拷贝函数StringCopy 它有两个参数 如果把参数名字起为str1和str2 例如functionStringCopy str1 str2 那么我们很难搞清楚究竟是把str1拷贝到str2中 还是刚好倒过来 可以把参数名字起得更有意义 如叫strSource和strDestination 这样从名字上就可以看出应该把strSource拷贝到strDestination 6 3 2如果输入参数以值传递的方式传递 则宜改用 ByValargument 方式来传递 这样可以防止作为参数的变量值被修改 同时又可以省去临时变量的构造过程 从而提高效率 6 3 3避免函数有太多的参数 参数个数尽量控制在5个以内 LotusScript代码规则 6 4函数的返回值要书写函数的返回值类型函数的返回值要与函数的名字相配合函数的正常返回值和错误返回值的区分函数尽量不要通过参数传递函数的返回值 除非有多个不相干的返回值 LotusScript代码规则 6 5函数的职责函数的职责要单一 如果觉得职责的 粒度 不好把握 可以先用自然语言写出总控模块 可以作为注释 针对自然语言的每句话即可作为一个函数 LotusScript代码规则 6 6变量的规则每个模块必须使用optiondeclare这个语句来强制要求所有的变量必须定义变量的定义后面要书写该变量的注释变量的作用范围尽量少用全局 作用范围越小越好变量尽量都要定义类型少使用Variant类型 LotusScript代码规则 6 7嵌套的深度和广度条件语句的嵌套不能超过3层 循环语句的嵌套不能超过3层 两者混合的嵌套也不能超过3层 条件结构的开始和结束语句之间的代码不能超过20行 循环结构的开始和结束语句之间的代码不能超过20行 LotusScript代码规则 将Redim的使用降到最少 下面的片断A比片断B快20 Fori 1to10000If i iMax TheniMax iMax 100RedimPreservesArray 1ToiMax EndIfsArray i NextFragmentBFori 1to10000RedimPreservesArray 1Toi sArray i Next使用GetNextDocument代替GetNthDocument LotusScript代码规则 6 8其他规则使用For循环代替Do循环遍历数组元素时 使用Forall代替For避免使用不必要的数组 例如 片断A比片断B快一倍 片断Afori 1to100sum sum x i nextt 1 sum片断Bfori 1to100t 1 t 1 x i Next LotusScript代码规则 6 9禁止硬编码任何将数据库文件名和路径名直接写在程序中的 都是硬编码 任何取当前数据库同路径作为目标数据库路径的做法 都是硬编码 公式规则 尽可能不用或少用 DbColumn DbLookup尽可能使用视图列序号而不是域的名字作为 DbColumnor DbLookup的参数使用 DbColumn DbLookup 时 尽量开启 缓存 参数 图片规则 所有的图片尽量放在文件系统上 使用来引用 这样既可以利用浏览器端的缓存 也可以省去Domino对图片的转换 JavaScript 具有通用性的 可以提取的js函数独立到一个单独的资源数据库中 注释规则 10 1函数体注释针对每个函数 按照下面的模板进行注释 NAME名字 PARAMETERS每个参数的名字 意图 类型 PRE CONDITIONS前提条件 RETURNEDVALUES类型 格式 LASTUPDATEDBY作者 LASTUPDATEDDATE2002 1 28 2002 3 11 VERSIONNUMBER2 1 DESCRIPTION实例化本类 subsubNamedim set endsub 注释规则 10 2代码行注释对于变量 关键的代码行都要在其右边进行注释 10 3设计元素版本说明对于使用 include来隐藏代码的代理或Script库 需要在 include上面说明下面三个信息 1 更新人2 更新时间3 被引入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论