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.   注释规则

Ø         每个函数前边必须包含一段注释,包括函数功能、参数说明、创建日志等。

1、    代码段内,必须有足够的注释,原则上根据每个子功能划分,即函数到底做了哪些事情?把你的回答写成注释即可。

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 SetValue(width, height) 良好的风格

sub SetValue(x,y)不好的风格

 

例如编写字符串拷贝函数StringCopy,它有两个参数。如果把参数名字起为str1和str2,例如function StringCopy( str1,  str2)

那么我们很难搞清楚究竟是把str1拷贝到str2中,还是刚好倒过来。
可以把参数名字起得更有意义,如叫strSource和strDestination。这样从名字上就可以看出应该把strSource拷贝到strDestination。

 

Ø       如果输入参数以值传递的方式传递 ,则宜改用ByVal argument方式来传递,这样可以防止作为参数的变量值被修改,同时又可以省去临时变量的构造过程,从而提高效率。

Ø       避免函数有太多的参数,参数个数尽量控制在5个以内。

8.4. 函数的返回值

Ø       要书写函数的返回值类型

Ø       函数的返回值要与函数的名字相配合

Ø       函数的正常返回值和错误返回值的区分

Ø       函数尽量不要通过参数传递函数的返回值

8.5. 函数的职责

函数的职责要单一,如果觉得职责的“粒度”不好把握,可以先用自然语言写出总控模块(可以作为注释),针对自然语言的每句话即可作为一个函数。

 

8.6. 变量的规则

Ø       变量的定义后面要书写该变量的注释

Ø       变量的作用范围尽量少用全局,作用范围越小越好

Ø       一组变量作用相近时,可将这组变量集中在一起定义,并且对该组变量作个说明,比如下面分为两组

 

   Private docApp As notesdocument             '应用主文档

   Private dbApp As notesdatabase              '应用数据库

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值