系统开发代码规范.docx
- 文档编号:26428934
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:16
- 大小:102.12KB
系统开发代码规范.docx
《系统开发代码规范.docx》由会员分享,可在线阅读,更多相关《系统开发代码规范.docx(16页珍藏版)》请在冰豆网上搜索。
系统开发代码规范
系统开发代码规范
北京慧点科技开发有限公司
2005年9月
目录
一、Domino网络域及组织的命名3
二、Domino服务器的命名3
三、系统验证字的命名4
四、用户和群组的命名5
五、模块数据库的命名5
六、数据库各设计元素的命名5
七、编码规范6
八、产品开发规范10
九、提交数据库备份命名规范14
一、Domino网络域及组织的命名
根据目前产品Indi.Office3.X、4.X的框架结构,开发工作主要采用分布式单域结构进行;所以在Domino网络域的命名上将采用统一域名。
在服务器及人员的所属组织上也采用统一的组织名称。
ØDomino网络域命名
Domino网络域的命名将采用公司名称的拼音首字母做为域名;如“神华集团”的汉语拼音(shenhuajituan)首字母SHJT作为神华集团Domino网络工作开发域。
Ø组织的命名
整个网络域组织与Domino网络域名称一致:
SHJT
※格式:
名称
域名格式
组织名格式
神华集团
SHJT
SHJT
二、Domino服务器的命名
系统中所有Domino服务器采用以下相同的层次结构进行命名:
服务器名/SHJT(如:
APNT01/SHJT)
Domino服务器的命名规则包括:
Ø服务器名(CommonName)命名规则
服务器名的命名规则将由以下部分组成:
服务器名称
功能代码
平台名称代码
序号(01-09,保留扩展)
例:
APNT01
AP
NT
01
服务器名定长,为6个英文字母或数字。
序号跟功能代码和平台代码相关,功能代码一样的服务器扩展时,顺序号增加一。
如:
APNT01
Ø服务器ID文件命名规则
服务器ID的文件命名:
服务器名称+扩展名
在服务器名称将取以上服务器的命名并用小写设置,在扩展名统一为:
.sid
如:
apnt01.sid
※服务器功能代码
服务器类型
代码
邮件服务器
ML
应用服务器
AP
同时具有邮件和应用功能的服务器
MA
中心服务器(HubServer)
HU
DominoWeb服务器(WWWServer)
WS
Domino网关服务器(GatewayServer)
GW
※平台名称代码
平台类型
代码
WinNT(2000)
NT
Linux
LI
SunSolaris
SO
IBMAS400
AS
三、系统验证字的命名
为了便于开发和测试,在验证字的管理也更加统一。
对验证字的命名进行如下约定:
Ø根验证字(组织)的命名规则
Ø验证所有服务器的验证字(组织单元)的命名规则
Ø验证用户的验证字(组织单元)的命名规则
Ø所有验证字标识符文件(CertifierID)的命名规则
验证标识符文件名采用英文,文件扩展名为:
cid。
所有服务器在域组织下注册。
验证字
名字和格式
验证字ID文件名
示例
根验证字
工作根(SHJT)
SHJT.cid
SHJT
服务器验证字
Servers
Servers.cid
Servers/SHJT
用户验证字
所属机构名称
例:
集团;分公司;
机构名称.cid
例如:
集团.cid,分公司.cid
集团/SHJT
分公司/集团/SHJT
四、用户和群组的命名
对用户及群组的命名将遵守IndiOffice产品的命名规则。
五、模块数据库的命名
数据库属性
命名规范说明
示例
数据库标题
使用中文作为数据库的标题;
发文管理
数据文件名
使用该数据库标题拼音首字母小写;
fwgl.nsf
六、数据库各设计元素的命名
设计元素
命名及规范说明
示例
表单
✓表单名称——以“frm”开头+表单中文拼音代码;不再使用别名,在表单备注中加以说明;
✓窗口标题——需用中文名称说明,或用数据库标题;
✓段落隐藏——对需要在表单中始终隐藏的部分,应放在表单最上面,需将隐藏的域放在表格中并对该域加以说明;在隐藏样式上无论是域还是文字都用“红色九号字宋体”来设置;
发布表单
frmFabu
域
✓域名称——以“fld”开头+域中文拼音代码;(系统特殊域出外;如:
subject、body)
✓隐藏域名称——以“hfld”开头+域中文拼音代码;
✓共享域名称——延续域的命名规则;
发布日期域
fldRiqi
子表单
✓子表单名称——以“sfrm”开头+表单中文拼音代码;需要加备注说明;
审批意见
sfrmShenpiyj
视图
✓视图名称——以“vw”开头+中文拼音代码;不使用别名,需加中文备注;
发布视图
vwFabu
代理
✓代理名称——以“agt”开头+中文拼音代码;不使用别名,需在注释中加以说明;
agtFabu
页面
✓页面名称——以“pag”开头+中文拼音代码;不使用别名,需在备注中加以说明;
pagFabu
七、编码规范
Ø变量和常量的命名
在编写LotusScript代码时,虽然Domino可以直接使用变量,但为了代码的可读性和防止输入时出现的错误,要求变量必须显式定义,即在使用之前必须先定义。
在代码的(Options)中设置“OptionExplicit”可以强制Notes进行变量定义检查。
变量命名的方法采用匈牙利命名法,基本结构为scope_typeVariableName
。
对于LotusScript编码,例如,定义一个整形变量,用来记录文档数量:
intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。
※变量类型和首字母对照关系如下表:
数据类型/对象类型
变量前缀
备注
Integer
intbln
做布尔变量时,使用bln。
String
str
Single
sng
Long
lng
Double
dbl
Currency
cur
Variant
blnastrobjvnt
做布尔变量用时,用bln;
做字符串数组用时,用astr;
做为对象使用时,用obj
不确定时,用vnt。
NotesDocument
doc
对应的ui对象的前缀增加ui,即uidoc。
对与当前文档统一用:
note
NotesDatabase
db
NotesDocumentCollection
dc
NotesView
vw
NotesViewEntry
ve
NotesViewEntryCollection
vec
对于数组,在数据类型的前缀前在增加一个a,例如字符串数组为astr。
对于在多个函数内都要使用的全局变量,在前面再增加“g_”。
例如一个全局的字符串变量:
g_strUserInfo。
在变量命名时要注意以下几点:
⏹选择有意义的名字,注意每个单词首字母要大写
⏹在一段函数中不使用同一个变量表示前后意义不同的两个数值
⏹i、j、k等只作为小型循环的循环索引变量
⏹避免使用意义不明确的单词来命名状态变量,如flag;用Is来命名逻辑变量,如:
blnFileIsFound
⏹如果需要的话,在变量最后附加计算限定词,如:
curSalesSum
⏹不能使用开发者姓名或简称做变量名。
在Script代码中,无论什么时候,均提倡应用常量取代数和固定字符。
也就是说,程序中除0,1以外,尽量不应该出现其他数字。
常量可以集中在程序开始部分定义,使用字母全部大写、单词间用下划线“_”连接的风格:
NUM_DAYS_IN_WEEK。
Ø函数和子过程
函数和子例程的命名一般使用动词短语结构,每个单词的首字母大写,函数命名应该清楚说明函数是做什么的。
函数命名——以“fn”开头+短语结构;(如:
fnGetDbPath)
子过程命名——以“su”开头+短语结构;(如:
suDealMail)
如果你不知道如何给某函数命名,说明此函数需要重新分析和界定。
一个函数或子例程的代码不应该太复杂,如果一个函数的长度超过200行,就可以考虑将其再次细分为多个函数了。
Ø注释
在代码中必须包含有效数量的注释行,通常超过总行数20%,但宜精不宜多,应该以能够有效维护代码为主要标准。
使用注释的目的:
◆用文字概述代码的作用(如函数的概述)
◆用文字描述代码本身无法说明的信息
◆明确代码的编写思路和逻辑方法
◆使人们注意到代码中的重要转折点
代码注释的原则:
◆在每个例程开头,使用标准的注释块,说明例程的作用、假设条件、限制、输入和输出、编写人、编写时间
◆修改代码时,一定要同步更新注释,并注明修改人、修改时间
◆除变量定义外,不要在代码行后加注释
◆注释要用完整的句子
◆使用注释是要说明代码的意图,而不是对代码的翻译
◆为防止重复问题,通常要在错误修正处添加注释
◆在代码未完成处要加注释
◆在复杂循环和分支结构处加注释,以帮助读者读懂源代码;如果必须依靠注释才能读懂得代码,就需要考虑重写了
◆在整个应用程序中使用一致的注释风格,使用相同的注释标记和结构
Ø错误捕捉
无论是在写代理、函数或子过程时,都需对所执行程序进行错误的扑捉;
onerrorgotoerrHandler
errHandler:
msgbox“………………”
编码样例如下:
FunctionfnReadFieldNames(dbAsNotesDatabase,strViewAsString,_
astrFieldNameAsVariant,intNumAsInteger)AsInteger
'『函数功能』
'读取域-列对应关系,及其数量
'1、获取视图
'2、根据视图中文档数量,确定数组维数。
如果不存在任何文档,则退出
'3、读取域名、在并重新设定在Excel表中的位置
'(因为增加了油田这一列,所以列号同同加一)
'『函数接口』
'dbinput目标数据库,包含Excel列----Notes域对应表
'strViewinput包含Excel列----Notes域对应表的视图名称
'astrFieldNameoutputExcel列----Notes域对应关系数组,
'三维数组:
列序号、列标题、Notes域名
'nNumoutput对应关系的条数
'『函数返回值』
'类型:
整型,小于0时表示函数内部出现错误:
'0函数执行成功
'-2找不到Notes域名和Excel表列的对应关系
'-99其他错误
'『备注』
'本函数仅用于原始数据导出函数,
'因为在导出时要将原Sheet名称作为第一列:
a0--第一列
'『作者』
'黄何寅北京慧点科技
'『修订历史』
'2001-12-28添加了函数返回值缺省值的设置
onerrorgotoerrHandler
……….
……….
ExitFunction
errHandler:
msgbox“fnReadFieldNameserror”&error&“inline”&cstr(erl)
Endfunction
八、产品开发规范
在产品IndiOffice3.X~4.X版本上进行项目开发时,需要遵守以下的规范:
1)表单规范:
♦Myview列表显示采用统一的表单,子表单,代理,具体的步骤可以参照《新myview修改指导文档》;对于旧myview样式要尽量和新myview一致(没有文档时不显示视图头,bottombar样式一致)
♦表单的窗口标题用moduletitle来计算,而不是写死的
♦Label统一采用4个汉字的宽度,比如:
作 者:
(使用两个全角空格)
发件人:
(使用两个半角空格)
处理情况:
当前处理:
(“当前处理人”,在不会有歧义的情况下尽量将4个以上的文字控制为4个字以内)
lable加粗。
表格title如果和库title相同,去掉。
表格采用tdtable类,提示和内容单元格各采用tdlabel和tdcontent类。
Label、内容与表格间没有空格。
♦关于按钮:
[返回]/[取消]/[关闭]/[退出],等统一成[退出](退出按钮的onclick统一调用doExit函数)
[保存]/[保存退出],统一成[保存退出]
[提交]视情况而定,如果是仅仅保存的含义则改为[保存退出],如果是要流转等含义则仍保留为[提交]
选择人员和部门用[查找]按钮;
选择日期时间用[选择]按钮;
为了保持风格一致,通常情况下[新建]按钮在按钮行的最左边,[查看配置]在按钮行的最右边。
按钮左右两边各加一个空格保持和边框的空隙。
注意两个字的按钮中间和前后各有一个空格;三个字和四个字只需前后有空格。
♦关于表单上的输入项
注释:
在输入项的后面加入以下这段html,用注释内容替换'---悬停说明----':
样例:
必填项:
标签前面添加以下这段html:
(注意引入oaresource库css/global.css)
日期域:
统一用选择按钮,按钮点击调用函数fPopCalendar(),点击域时不需要弹出层,日期域不可编辑。
(注意引入oaresource的jslib/pgCalPicker.js)
日期+时间域:
统一用选择按钮,按钮点击调用函数fPopDateTime(),点击域时不需要弹出层,日期域不可编辑。
(注意引入oaresource的dateTimePicker.js)
时间:
统一使用选择按钮,按钮点击调用函数selectTime('域名'),点击域时不需要弹出层。
(注意引入oaresource的jslib/timePicker.js)
♦域规范
注意设置域类型与实际的功能一致:
比如人名至少用姓名域、数字应该用数字域等
♦输入校验
fnDocumentIsExist():
用于在文档提交之前就要判断数据库中是否存在重复的文档,返回不会丢失输入。
(注意引入oaresource库jslib/global.js)
♦提示语
输入时如果有多个检测的域,按从上到下,从左到右的顺序进行检查,尽量把要提示的信息集中在一个对话框提示,但注意提示条目的精确性。
(如表单有2个必填域,标题和部门,都为空时提交应该提示:
“标题不能为空,请重新输入!
\换行\部门不能为空,请重新输入!
”;输入标题后提交应该提示“部门不能为空,请重新输入!
”)
注意用语:
应该采用“提示错误,操作指导”的模式(如:
“标题不能为空,请重新输入!
”)。
相应的提示后,注意输入焦点设置到相应的域;
♦return,resoucepath,dbth等域用显示时计算,不要保存,如果有js要访问,就通过添加标记来转换一下。
♦通过url传递参数时,如果参数值有可能是中文的要注意编码(js用escape和unescape函数;代理用query_string获得参数,用fndecoded()处理。
)
♦用户简名处理
为避免页面会将系统注册时为重名用户自动加入的01、02的标识符同时显示出来的问题,需要将用户名按以下方法统一处理为简名格式:
1.需要处理用户名的表单、页面、代理要引用oaresource库的jslib/global.js;
2.需要选择用户的表单需要引用oaresource库的jslib/select.js,并清除写在表单js中的selectPerson函数;
3..将用户名部分用
4.处理视图中的用户名时要注意处理的列是否被用来做查找的key,如果作为查找的key的话,应该保留原有列值不变,将其隐藏,再增加一个对应的处理过的列;
5.注意括起来的用户名部分必须是Abbreviate格式或者Canonical格式;
6..注意在用户名输入框的onclick事件中,如果使用this.name给Address域赋值,需要将onclick事件的代码清空,统一使用选择按钮来选择人员;
7.如果处理的用户名域除了标准的地址簿之外,还可以使用其他方式选择值(比如发文中的发送人员域,除了从地址簿选人还可以选择个人群组),那么在其他选择方式的确定按钮中还要调用一下opener.onSelect()。
8.具体样例可以参考发文管理。
♦选择用户和部门可以通过调用selectPerson和selDepartment等函数(含多选、单选,具体请参看相应的js中的说明),注意函数参数设定(对于选择用户的函数来说,缺省仅能选择用户;可以通过传递参数控制是否还可以选择群组或者是仅能选择群组)
♦注意添加出错页面,从规范模板库中拷贝$$ReturnGeneralError表单
♦“查看配置”、“搜索”等通用表单注意和模板的一致性,如有特殊修改应在表单注释中标注
♦有最后提交确认页面的描述要用“文件已提交”而不是“文档已提交”;
2)视图规范
因为显示列表通常使用嵌入视图,注意视图及视图列的一些设置:
修改需要显示的视图属性,选中“允许选择文档”:
如果列需要链接,选中列属性“将此列中的值显示为链接”:
根据情况设定单击列标题是否排序,一般情况下要求:
时间列、类别列都要能做升降序的排序:
视图及列其他设置按缺省就可以了。
3)代理和lib库规范
♦LotusScript
替换原commonlib中的showerror函数,并添加msg函数,样例库可以参考规章制度。
调用样例:
msg"要输出的消息"
showerror"当前函数"
♦注释
注意在函数头和修改的行附近添加修改注释;
对新添加的函数注意在函数开头添加函数说明:
包括功能描述、参数说明、返回值说明、修改历史等;
♦定时代理设置
通常情况下对每日运行一次的代理运行时间设置为20:
00~23:
30之间执行,尽量避免设置在每日0点以后运行,因为此时有很多系统任务启动,会增加服务器任务排队。
4)资源规范
数据库调用的公用js函数都存储在IndiOffice资源库oaresource.nsf中,对公用函数的修改一定要注意和旧函数兼容。
九、提交数据库备份命名规范
为了使所有服务器上的所有应用的数据库,设计保持一致,很好的规范命名的可以使在统一更换设计时更加清晰和便于管理;
在每一阶段完成一定版本时,需提交相应模块数据库的设计作为备份和版本上的控制,那么在提交时应遵循以下原则:
◆提交的数据库必须以模板形式(即***.ntf)保存;
◆提交的数据库在标题和文件名称上必须加上提交日期;
【如:
邮件(2004-03-09)/mail50(2004-03-09).ntf】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 开发 代码 规范