收藏 分销(赏)

Domino代码优化编码规范.pptx

上传人:a199****6536 文档编号:4610137 上传时间:2024-10-07 格式:PPTX 页数:32 大小:129.69KB 下载积分:12 金币
下载 相关 举报
Domino代码优化编码规范.pptx_第1页
第1页 / 共32页
Domino代码优化编码规范.pptx_第2页
第2页 / 共32页


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

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服