系统开发代码规范.doc_第1页
系统开发代码规范.doc_第2页
系统开发代码规范.doc_第3页
系统开发代码规范.doc_第4页
系统开发代码规范.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目开发部开发代码规范系统开发代码规范北京慧点科技开发有限公司2005年9月目录一、Domino网络域及组织的命名3二、Domino服务器的命名3三、系统验证字的命名4四、用户和群组的命名5五、模块数据库的命名5六、数据库各设计元素的命名5七、编码规范6八、产品开发规范10九、提交数据库备份命名规范142一、Domino网络域及组织的命名根据目前产品Indi.Office3.X、4.X的框架结构,开发工作主要采用分布式单域结构进行;所以在Domino网络域的命名上将采用统一域名。在服务器及人员的所属组织上也采用统一的组织名称。 Domino网络域命名Domino网络域的命名将采用公司名称的拼音首字母做为域名;如“神华集团”的汉语拼音(shen hua ji tuan)首字母SHJT作为神华集团Domino网络工作开发域。 组织的命名整个网络域组织与Domino网络域名称一致:SHJT 格式:名称域名格式组织名格式神华集团SHJTSHJT二、Domino服务器的命名系统中所有Domino服务器采用以下相同的层次结构进行命名:服务器名/ SHJT(如:APNT01/SHJT)Domino服务器的命名规则包括: 服务器名(CommonName)命名规则服务器名的命名规则将由以下部分组成:服务器名称功能代码平台名称代码序号(01-09,保留扩展)例:APNT01APNT01服务器名定长,为6个英文字母或数字。序号跟功能代码和平台代码相关,功能代码一样的服务器扩展时,顺序号增加一。如:APNT01 服务器ID文件命名规则服务器ID的文件命名:服务器名称扩展名在服务器名称将取以上服务器的命名并用小写设置,在扩展名统一为:.sid如:apnt01.sid 服务器功能代码服务器类型代码邮件服务器ML应用服务器AP同时具有邮件和应用功能的服务器MA中心服务器(Hub Server)HUDomino Web服务器(WWW Server)WSDomino 网关服务器(Gateway Server)GW 平台名称代码平台类型代码WinNT(2000)NTLinuxLISun SolarisSOIBM AS400AS三、系统验证字的命名为了便于开发和测试,在验证字的管理也更加统一。对验证字的命名进行如下约定: 根验证字(组织)的命名规则 验证所有服务器的验证字(组织单元)的命名规则 验证用户的验证字(组织单元)的命名规则 所有验证字标识符文件(Certifier ID)的命名规则验证标识符文件名采用英文,文件扩展名为:cid。所有服务器在域组织下注册。验证字名字和格式验证字ID文件名示例根验证字工作根(SHJT)SHJT.cidSHJT服务器验证字ServersServers.cidServers/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)中设置“Option Explicit”可以强制Notes进行变量定义检查。变量命名的方法采用匈牙利命名法,基本结构为scope_typeVariableName。对于LotusScript编码,例如,定义一个整形变量,用来记录文档数量:intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。 变量类型和首字母对照关系如下表:数据类型/对象类型变量前缀备注Integerint bln做布尔变量时,使用bln。StringstrSinglesngLonglngDoubledblCurrencycurVariantbln astr obj vnt做布尔变量用时,用bln;做字符串数组用时,用astr;做为对象使用时,用obj不确定时,用vnt。NotesDocumentdoc对应的ui对象的前缀增加ui,即uidoc。对与当前文档统一用:noteNotesDatabasedbNotesDocumentCollectiondcNotesViewvwNotesViewEntryveNotesViewEntryCollectionvec对于数组,在数据类型的前缀前在增加一个a,例如字符串数组为astr。对于在多个函数内都要使用的全局变量,在前面再增加“g_”。例如一个全局的字符串变量:g_strUserInfo。在变量命名时要注意以下几点:n 选择有意义的名字,注意每个单词首字母要大写n 在一段函数中不使用同一个变量表示前后意义不同的两个数值n i、j、k等只作为小型循环的循环索引变量n 避免使用意义不明确的单词来命名状态变量,如flag;用Is来命名逻辑变量,如:blnFileIsFoundn 如果需要的话,在变量最后附加计算限定词,如:curSalesSumn 不能使用开发者姓名或简称做变量名。在Script代码中,无论什么时候,均提倡应用常量取代数和固定字符。也就是说,程序中除0,1以外,尽量不应该出现其他数字。常量可以集中在程序开始部分定义,使用字母全部大写、单词间用下划线“_”连接的风格:NUM_DAYS_IN_WEEK。 函数和子过程函数和子例程的命名一般使用动词短语结构,每个单词的首字母大写,函数命名应该清楚说明函数是做什么的。函数命名以“fn”开头短语结构;(如:fnGetDbPath)子过程命名以“su”开头短语结构;(如:suDealMail)如果你不知道如何给某函数命名,说明此函数需要重新分析和界定。一个函数或子例程的代码不应该太复杂,如果一个函数的长度超过200行,就可以考虑将其再次细分为多个函数了。 注释在代码中必须包含有效数量的注释行,通常超过总行数20%,但宜精不宜多,应该以能够有效维护代码为主要标准。使用注释的目的:u 用文字概述代码的作用(如函数的概述)u 用文字描述代码本身无法说明的信息u 明确代码的编写思路和逻辑方法u 使人们注意到代码中的重要转折点代码注释的原则:u 在每个例程开头,使用标准的注释块,说明例程的作用、假设条件、限制、输入和输出、编写人、编写时间u 修改代码时,一定要同步更新注释,并注明修改人、修改时间u 除变量定义外,不要在代码行后加注释u 注释要用完整的句子u 使用注释是要说明代码的意图,而不是对代码的翻译u 为防止重复问题,通常要在错误修正处添加注释u 在代码未完成处要加注释u 在复杂循环和分支结构处加注释,以帮助读者读懂源代码;如果必须依靠注释才能读懂得代码,就需要考虑重写了u 在整个应用程序中使用一致的注释风格,使用相同的注释标记和结构 错误捕捉无论是在写代理、函数或子过程时,都需对所执行程序进行错误的扑捉;on error goto errHandlererrHandler:msgbox “”编码样例如下:Function fnReadFieldNames(db As NotesDatabase, strView As String, _astrFieldName As Variant, intNum As Integer) As Integer 函数功能读取域-列对应关系,及其数量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添加了函数返回值缺省值的设置on error goto errHandler.Exit FunctionerrHandler:msgbox “fnReadFieldNames error ” & error & “ in line ” & cstr(erl)End function八、产品开发规范在产品IndiOffice3.X4.X版本上进行项目开发时,需要遵守以下的规范:1) 表单规范: Myview列表显示采用统一的表单,子表单,代理,具体的步骤可以参照新myview修改指导文档;对于旧myview样式要尽量和新myview一致(没有文档时不显示视图头,bottombar样式一致) 表单的窗口标题用moduletitle来计算,而不是写死的 Label统一采用4个汉字的宽度,比如:作者:(使用两个全角空格)发 件 人:(使用两个半角空格)处理情况:当前处理:(“当前处理人”,在不会有歧义的情况下尽量将4个以上的文字控制为4个字以内)lable加粗。表格title如果和库title相同,去掉。表格采用tdtable类,提示和内容单元格各采用tdlabel和tdcontent类。Label、内容与表格间没有空格。 关于按钮:返回/取消/关闭/退出 ,等统一成退出(退出按钮的onclick统一调用doExit函数)保存/保存退出,统一成保存退出提交视情况而定,如果是仅仅保存的含义则改为保存退出,如果是要流转等含义则仍保留为提交选择人员和部门用查找按钮;选择日期时间用选择按钮;为了保持风格一致,通常情况下新建按钮在按钮行的最左边,查看配置在按钮行的最右边。按钮左右两边各加一个空格保持和边框的空隙。注意两个字的按钮中间和前后各有一个空格;三个字和四个字只需前后有空格。 关于表单上的输入项注释:在输入项的后面加入以下这段html,用注释内容替换-悬停说明-: 2;当鼠标悬停在上面显示黄色的注释条。 样例: 2必填项:标签前面添加以下这段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事件中,如果使用给Address域赋值,需要将onclick事件的代码清空,统一使用选择按钮来选择人员;7. 如果处理的用户名域除了标准的地址簿之外,还可以使用其他方式选择值(比如发文中的发送人员域,除了从地址簿选人还可以选择个人群组),那么在其他选择方式的确定按钮中还要调用一下opener.onSelect()。8. 具体样例可以参考发文管理。 选择用户和部门可以通过调用selectPerson和selDepartment等函数(含多选、单选,具体请参看相应的js中的说明),注意函数参数设定(对于选择用户的函数来说,缺省仅能选择用户;可以通过传递参数控制是否还可以选择群组或者是仅能选择群组) 注意添加出错页面,从规范模板库中拷贝$ReturnGeneralError表单 “查看配置”、“搜索”等通用表单注意和模板的一致性,如有特殊修改应在表单注释中标注 有最后提交确认页面的描述要用“文件已提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论