Domino5编程规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Domino 5.x编程规范
试行版
1总则 (3)
1.1 文档约定 (3)
1.2 基本要求 (3)
1.3 可读性要求 (3)
1.4 结构化要求 (3)
1.5 正确性与容错性要求 (4)
1.6 复用性要求 (4)
2工程规范 (4)
2.1 Domino配置要求 (4)
2.2 文件目录 (5)
2.3 Notes客户端要求 (5)
3技术细节及规范 (5)
3.1 数据设计元素命名 (5)
3.1.1 数据库命名 (5)
3.1.2 表单命名 (5)
3.1.3 视图命名 (6)
3.1.4 Script库命名 (6)
3.1.5 域命名 (6)
3.1.6 页面命名 (6)
3.2 代码风格 (7)
3.2.1 类的命名 (7)
3.2.2 过程命名 (7)
3.2.3 变量命名 (7)
3.2.4 常量命名 (7)
3.2.5 代码组织 (7)
3.2.6 注释风格 (8)
3.3 表单设计规范 (9)
3.3.1 表单构成 (9)
3.3.2 HTML设计元素 (9)
3.3.3 程序代码的组织 (9)
3.3.4 表单的绘制 (9)
4数据库的发布 (10)
5后记 (10)
1总则
1.1 文档约定
所有代码示例仅作为描述规范的工具,与具体的语言无关。
Domino中所有的可用语言均需要遵照该规范进行代码书写。
该规范假定读者具有相当的Domino开发经验,初学者如对该文有理解上的障碍请与文档编写者或责任人联系,也可通过其他途径获得支持。
1.2 基本要求
✓数据库设计清爽,结构简单,便于维护。
✓程序结构清晰,简单易懂,单个函数的程序行数一般不得超过100行。
✓务求代码精简,避免垃圾代码或注释。
✓在能够满足功能与性能要求的前提下,尽量使用标准库函数和公共函数。
✓不可随意定义全局变量,尽量使用局部变量。
✓逻辑运算复杂的场合,使用括号以避免代码阅读障碍。
1.3 可读性要求
✓可读性第一,效率第二。
✓保持注释与代码完全一致。
✓每个源程序文件,都有文件头说明,说明规格见注释规范。
✓每个函数,都有函数头说明,说明规格见注释规范。
✓主要变量定义或引用时,注释能反映其含义。
✓常量定义有相应说明。
✓处理过程的每个阶段都有相关注释说明。
✓在典型算法前都有注释。
✓利用缩进来显示程序的逻辑结构,缩进量一致为2个空格。
✓循环、分支层次不要超过五层。
✓注释可以与语句在同一行,也可以在上行。
✓空行和空白字符也是一种特殊注释。
✓一目了然的语句不加注释。
✓注释的作用范围可以为:定义、引用、条件分支以及一段代码。
1.4 结构化要求
✓禁止出现两条等价的支路。
✓禁止使用GOTO语句。
✓用IF 语句来强调只执行两组语句中的一组。
禁止ELSE GOTO 和ELSE RETURN。
✓用CASE 实现多路分支。
✓避免从循环引出多个出口。
✓函数只有一个出口,简单的结构清晰的方法除外。
✓不使用条件赋值语句。
✓避免不必要的分支。
✓不要轻易用条件分支去替换逻辑表达式。
1.5 正确性与容错性要求
✓程序首先必须正确无误,然后考虑代码的优雅。
✓无法证明你的程序没有错误,因此在编写完一段程序后,应立即复核。
✓修正一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响,程序的每个模块尽量封装起来。
✓所有变量在调用前必须被初始化(Lotus Script语言无此要求)。
✓对所有的用户输入,必须进行合法性检查。
✓不要比较浮点数的相等,如:10.0 * 0.1 == 1.0 ,不可靠。
✓程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如数据库能否打开。
✓单元测试也是编码的一部份,提交测试的程序必须通过个人单元测试。
1.6 复用性要求
✓经常重复使用的、并能够完成相对独立的功能部件应抽象为公共模块或类。
✓公共模块或类应充分运用OO思想,避免或减少外部依赖,考虑独立性、封装性。
2工程规范
2.1 Domino配置要求
✓必须创建certlog.nsf
✓必须创建domcfg.nsf
✓由于中文版Domino下domcfg.ntf数据库的表单错误地被翻译为中文,造成系统某些功能无法正常发挥作用,请手工修正,具体的操作方法请参考技术部相关文档。
✓无特殊要求的开发环境,请启用基于会话的验证,单服务/多服务器模式均可。
✓按实际开发产品或项目中涉及的人员角色、岗位来注册测试用户。
✓项目技术负责人在Domino目录中建立项目团队群组,并设置相关开发模块的存取权限。
2.2 文件目录
✓禁止直接将应用数据库存放于数据目录的根下
✓必须创建usr目录和prj目录
✓在usr目录下,每位开发人员可以建立自己的私人主目录
✓在prj目录下,每位项目经理可以建立项目主目录
2.3 Notes客户端要求
✓整理个人工作台,按数据库类别或项目组织个人工作台或书签
✓本地数据库目录不允许存放项目数据库文件(项目经理出于备份或屏蔽设计的目的除外)。
✓离开个人计算机,必须注销Notes并锁定Windows系统。
3技术细节及规范
3.1 数据设计元素命名
3.1.1数据库命名
采用字母、数字、下划线的组合进行命名,字母一律使用小写,数据库的命名要求能够反映其履行的功能,如names.nsf。
禁止使用大写字母、双字节字符或空格对数据库命名。
3.1.2表单命名
说明:表单可以具有多个名称,其一为表单的正式名字,其他为表单的别名。
对于程序开发者和出于编程考虑的场合,建议采用别名作为确定表单的真正权威名字,而正式名字一般用以表示表单的用途,可以采用中文名字或英文短语表示,如Personal Stationery。
(1)特殊表单的命名
$$ViewTemplateDefault
$$ReturnAuthenticationFailure
$$ReturnAuthorizationFailure
$$ReturnGeneralError
$$ViewTemplate for …
这些表单我们无法更改它们的名字,但出于编码的需要,我们可以为他们设置一个别名,或将上面的名字作为别名而另起一个名字以作编码之用。
(2)一般表单的命名
主表单
应用的核心表单,一个数据库应用中可能存在多个这样的表单。
例如一个电子商务应用中的定单表单。
采用字母、数字、下划线的组合对其进行命名,每个单词的第一个字母大写。
如SalesOrder、_MailPerformance。
表单名字应该浅显易懂,便于记忆。
辅助表单
这些表单包括应用设置表单、对话框表单等,它们的命名要求基本与主表单相同,区别在于需要为起好的名字添加一个括号,表示对用户不可见。
如(RulesDlg)。
为了编写程序的方便,可以为这些表单添加别名,如RulesDlg。
3.1.3视图命名
采用字母、数字、下划线的组合对视图进行命名,每个单词的第一个字母请用大写。
如RegUserList。
视图名字应该浅显易懂,便于记忆。
需要在代码中使用的名字请勿包含空格。
程序内部视图使用括号将名字括起来,表示视图为隐藏视图。
3.1.4Script库命名
采用字母、数字、下划线的组合对Script库进行命名,每个单词的第一个字母请用大写。
如CoreEmailClasses。
库名字应该浅显易懂,便于记忆。
不要在名字中包含空格。
3.1.5域命名
采用字母、数字、下划线的组合对域进行命名,每个单词的第一个字母请用大写。
如UserName,又如_Options。
名字应该浅显易懂,便于记忆。
3.1.6页面命名
(1)一般页面
指页面的内容而言,页面中包含的内容直接应用于界面或相关位置,并且一般为界面可
见内容。
采用字母、数字、下划线的组合对页面进行命名,每个单词的首字母请用大写,如MainPage。
名字应该浅显易懂,便于记忆。
(2)资源页面
资源页面中存放的是可以供其他多个页面或表单使用的共享元素,其中可能嵌入的是附件(图片、JavaScript代码库等)、代码文件等。
采用字母、数字、下划线的组合对其进行命名,所有字母都使用小写,如ie_default.css。
命名应该浅显易懂,便于记忆。
(3)系统保留名字页面
类似特殊表单的命名,必须遵照Lotus编程约定。
3.2 代码风格
3.2.1类的命名
采用字母、数字、下划线的组合进行命名,首字母大写,类的命名要求能够反映描述的事物,如People。
3.2.2过程命名
采用字母、数字、下划线的组合进行命名,一个过程是一个动作,名称可采用两部分确定,即动宾结构短语,动词首字母小写,名词首字母大写,如setTitle,过程的命名要求能够反映所执行的操作。
3.2.3变量命名
(1)成员变量
为了与其他变量如局部变量区分,请在类成员前面添加标记m_,含义为member,其它部分采用字母、数字、下划线的组合进行命名,首字母大写,如m_UserName。
(2)全局变量和局部变量
每个单词首字母大写,其他字母小写。
3.2.4常量命名
用大写字母表示。
3.2.5代码组织
单一过程代码行数不可超过100行(通用原则,部分过程可能有不一致的要求,如有冲突以特殊要求为准),主过程的职责为执行初始化、清除并进行功能块的调用,主过程的代码行数不可操作50行。
空行约定
请按照语义将代码分成不同的段落,每个段落间使用1个空行分隔。
运算符使用预定
二目运算符请在其前后各添加一个空格,如m_iCount = a + b。
括号请在其内侧添加一个空格。
单行代码长度
对于超长的单行代码,请分割成多行,以便于阅读和修改。
具体原则为:1024*768的分辨率下,在缺省的编程窗格布局中,一屏的可视范围下能够完全显示一行,而不使用横向滚动条。
注释要求
代码必须有注释,所有变量的声明、复杂段落、过程、类以及修订都应该添加注释文字,没有注释的代码不能通过复核,注释可以采用中文或英文。
注释量:至少占代码的30% 。
3.2.6注释风格
(1)单行注释
可以放在代码行的后面或上面,如
Dim Count as Long ‘某某东西的计数
或
‘某某东西的计数
Dim Count as Long
(2)多行注释
多行注释一般放在描述的对象之前,如一个类的前面,类或相关独立过程的描述请按照如下的格式书写
%rem**
* Copyright 2000 info21 All right reserved.
* Description:
* Version:
* Author:
* Date:
* Modify Log: *************************************
*
* End Log*******************************************
*%endrem
一般的大段注释,如过程中的某一段落的算法描述,可以这样写
%rem**
这是一个示例的注释编写方法
多行之间可以象写文章一样分段。
注释中也可以添加相应的装饰字符
*%endrem
3.3 表单设计规范
表单的设计是程序逻辑实现的主角,表单设计的好坏对程序应用效果的影响很大,从一定程度上讲,不亚于代码设计带来的影响。
因此,我们将表单的设计作为独立的一节来说明。
3.3.1表单构成
表单的设计采用模块化的设计思想,请将公用部分,即可能出现在其他表单中的部分提取出来,存放在子表单中。
多处使用的具有同样功能的域,也可以作为共享的域设计。
3.3.2HTML设计元素
JavaScript、CSS一般请将它们存放于页面之中,然后在表单编程窗格HTML首页内容中添加相关的引入代码。
页面中的代码编写规则,遵从其他代码的风格,具体内容参看相关章节。
页面中代码(或页面中添加的文本附件中的代码)的字体要求:Courier New 9号棕色。
表单中不可直接添加大量的HTML内置文本。
表单中的字体请全部采用缺省字体,然后通过CSS类控制风格。
CSS的运用要精简,规范,不可滥用。
3.3.3程序代码的组织
表单内不应包含过多的程序代码(前台处理除外),能够组织在Script库中的,尽量组织在Script库中,便于维护和复用。
3.3.4表单的绘制
排放次序(从上至下)
隐藏域
用户工作区
版权标记等其他
隐含域要求
所有的隐含域均采用表格的方式绘制排放,即类似登记表的形式。
在每个域的前一单元格中放置该域的作用描述。
隐含域用红色字体表示。
可编辑
4数据库的发布
✓修改数据库图标,使之包含Info21 标志
✓采用统一的ID对数据库进行签名
✓屏蔽设计
✓制作安装程序(如无特殊说明则不作要求)
5后记
制订本规范的目的是为了让大家养成良好的编程习惯,这些规范是要让程序有良好的可读性和可维护性,大家开始可能对这些规则不适应,但是在多个开发人员共同创作的情况下,这些规则是必需的。
这不仅仅是为了开发效率来考虑,也便于大家更高效地学习和提高。
本规范不可避免地存在一些考虑不周详的地方,请大家及时与编者联系,以便于在下一个版本中修订。
所有被采纳建议的建议者姓名及建议内容将被列入本文正文之前。
. .
精选模板。