Notes规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Notes程序开发规范备忘
1. 表单的规则
1.1. 表单命名规则
表单命名规范:必须有中文名和英文别名,其中英文别名命名格式为:frm + 其他字符。
必须填写表单的别名.别名的可以用英文单词组合或汉语拼音.如果用拼音,在能够容忍的长度内,尽量用全拼。
通用表单的英文别名命名格式为:$$+ 其他字符,一般不需要自己创建。
1.2. 表单的Js Header
表单的Js Header中的函数应尽可能的少。
只保留仅与本表单相关的特殊的Js函数。
通用的Js函数应放到资源数据库中。
1.3. 表单隐藏域设计
表单中的隐藏域全部放在一起,以表格的形式展现,并且放在表单的上方,如:
通过<div style=”display:none”>……</div>的方式隐藏内容,不采用Domino本身的隐藏方式。
通用的隐藏域,如文档UNID,不能在表单中单独创建这些域,如是通用的,则在资源库中创建,表单再引入,方便日后管理和维护。
隐藏域用到多少创建多少,没用到的隐藏域一个也不用放在表单中,隐藏域必须包含文字说明。
为了界面直观明了,隐藏的内容全部采用红色标出来。
1.4. 表单中的按钮设计
表单按钮采用HTML格式,每个按钮占用一列,方便日后的统一修改和维护。
1.5. 表单中的显示内容
界面内容尽可能不用HTML代码方式设计,多采用Domino本身的设计方式,表格宽度选取“按窗口大小调整”,而不是“按固定宽度”,然后在表格外套一大表格,代码如:<table width=<计算文本> border=0 align="center"><tr><td>……</TD></TR></TABLE>,如上图所示。
这样做的目的是表格宽度由计算文本控制,这样调整计算文本即可调整整个表格的大小。
正文内容和附件都是子表单,从资源库中引入,不能重新创建,减少日后的维护。
1.6. 表单的OnLoad
Onload中的代码要尽可能的简短,不要写具体的实现代码,只写被调用的函数体即可。
例如:
//打开前设置相关状态域:ondocload();
1.7. 表单代理的调用
最好采用这样的形式:document.all.item(‘savedoc’).click。
这样做的好处在于代理可以取得表单上所有域的内容,调用代理之前可以进行js前台判断。
如上边方法不能实现,则根据自己擅长的方式处理。
2. 域的规则
命名规则:可以用英文单词组合或汉语拼音.如果用拼音,在能够容忍的长度内,尽量用全拼,如收文编号:swbh或者swNumber。
表单保留域:表单中有些域必须统一,如标题(Subject),正文(Body)。
3. 视图的规则
隐藏视图命名规范:必须有中文名和英文别名,而且必须有括号括起,中文名命名为$$+ 中文名称,英文别名命名为$$vw + 英文字符。
如($$模块配置)$$vwModelConfig。
显示视图命名规范:必须有中文名和英文别名,英文别名命名为vw + 英文字符。
如:模块配置vwModelConfig。
视图列中列标题和内容全部靠左对齐,没有特殊的情况下,只有一列有链接,其他列只是显示信息;每列最好有排序功能。
删除列放在视图的第一列。
视图的索引:“刷新索引”属性一般选为:“自动刷新”;“废弃索引”属性一般选为:“不废弃”。
对于“用户经常访问,视图中文档经常变动”的视图,这种设置有助于提高视图的打开速度。
4. 代理的规则
代理命名规范:ag + 函数名,如保存文档agSaveDoc,代理中不编写具体实现代码,只是调用一个函数,如call SaveDoc。
函数存放在Script库中,并且函数名称必须是代理名字去掉ag后的函数名,即保持名字的同步。
有几个通用代理:agToExcelPrint(打印)、ViewQueryOpenDefault(视图模板表单打开时调用)、wDeleteDocument(删除文档)。
5. Script库的规则
每个数据库中一般包括3个Script库,ErrorLog(出错处理),MainLib(代理调用的各个函数),Common(通用函数),特别说一下,Common库以资源库中的为基准,如设计过程中,出现通用的函数,则先将函数放到资源库的Common库中,然后在拷贝的自己的库,即一定保持资源库中的Common库的函数是最新最全的。
为了代码的规范,特作以下设定:
当前会话对象命名:session
当前数据库对象:db,其他的数据库:db+ 英文字符.
当前文档对象: note或者doc。
其他的文档doc+英文字符。
6. 注释规则
每个函数前边必须包含一段注释,包括函数功能、参数说明、创建日志等。
代码段内,必须有足够的注释,原则上根据每个子功能划分,即函数到底做了哪些事情?把你的回答写成注释即可。
7. 错误处理规则
每个函数必须具备出错处理机制,错误内容写入系统出错日志库中。
出错函数调用已经写好,不用自个编写。
原理:使用LotusScript的“on error goto lable”,当发生错误时,跳转到”lable”指定的行下面,然后由我们自己来处理错误,我们提供了一个错误处理类“ErrorLog”。
该类中的方法“Sub writeErrorToLog(db As notesdatabase,Byval Errmsg As String,Byval Errline As String)”用于处理错误,该方法的功能是记录出错信息,并写到出错日志库中。
使用方法:
在函数的开始添加
On Error Goto er1 ‘当发生错误时转到”er1:”行处写:
Call writeErrorToLog(session.CurrentDatabase,Cstr(Error()),Cstr(Erl()))
8. LotusScript代码规则
8.1. 函数的长度
函数中的代码行数原则上不要多于100行。
8.2. 函数的命名
让我们看一些错误的命名:
PersonLog ‘更新人员日志
PeopleOut ‘打印人员外出的信息
相对比较正确的应该是这样
UpdatePersonLog ‘更新人员日志
PrintPeopleOut ‘打印人员外出的信息
8.3. 参数的规则
参数名字要有意义
例如:
sub SetV alue(width, height) ’良好的风格
sub SetV alue(x,y)’不好的风格
例如编写字符串拷贝函数StringCopy,它有两个参数。
如果把参数名字起为str1和str2,例如function StringCopy( str1, str2)。
那么我们很难搞清楚究竟是把str1拷贝到str2中,还是刚好倒过来。
可以把参数名字起得更有意义,如叫strSource和strDestination。
这样从名字上就可以看出应该把strSource拷贝到strDestination。
如果输入参数以值传递的方式传递,则宜改用“ByV al argument”方式来传递,这样可以防止作为参数的变量值被修改,同时又可以省去临时变量的构造过程,从而提高效率。
避免函数有太多的参数,参数个数尽量控制在5个以内。
8.4. 函数的返回值
要书写函数的返回值类型
函数的返回值要与函数的名字相配合
函数的正常返回值和错误返回值的区分
函数尽量不要通过参数传递函数的返回值
8.5. 函数的职责
函数的职责要单一,如果觉得职责的“粒度”不好把握,可以先用自然语言写出总控模块(可以作为注释),针对自然语言的每句话即可作为一个函数。
8.6. 变量的规则
变量的定义后面要书写该变量的注释
变量的作用范围尽量少用全局,作用范围越小越好
一组变量作用相近时,可将这组变量集中在一起定义,并且对该组变量作个说明,比如下面分为两组
Private docApp As notesdocument '应用主文档
Private dbApp As notesdatabase '应用数据库。