GL语言开发原则及规范简化版_第1页
GL语言开发原则及规范简化版_第2页
GL语言开发原则及规范简化版_第3页
GL语言开发原则及规范简化版_第4页
GL语言开发原则及规范简化版_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、4GL语言开发原则及规范中科软件股份有限企业2002年04月27日目录1编码规范.11.1命名规范.1对象命名.1常量和变量命名.51.2说明规范.7程序言件部分的说明.8函数部分的说明.9函数(过程)程序的增、删、改的说明说明商定.11函数体内部的代码段改正说明.12函数体内部的代码段说明商定.121.3书写规范.13基来源则.13保存字引用规则.14LET语句.14IF语句.14DEFINE语句.15CALL语句.16函数体内部组织.161.4注意事项.18编码规范1.1命名规范对象命名数据库命名规范数据库名长度:不超出INFORMIX规定长度(十八位);采纳英文形式,规则以下:数据库名由

2、两部分构成:系统名+DB;举例:财富保险业务办理系统的数据库命名为:PrpInsDB系统名由英文单词构成,每个单词首字母大写,单词可采纳缩写形式;附表供给的词根表作为构词的独一依照。本小节规范合用于各样语言版本的系统。数据库表命名规范数据库表名长度:不超出INFORMIX规定长度(十八位);采纳英文和“_”构成形式,规则以下:数据库表名由三部分构成:系统名+业务种类+表的英文名(+“_”+子对象名),业务种类用1位大写字母表示,如承保业务为C、批阅业务为P、理赔业务为L、收付费业务的数据表为J、通用代码为D;举例:财富保险承保保单基本信息表命名为:PrpCmain;货物运输保险保单信息表(继承

3、了保单基本信息):PrpCmain_Cargo。业务种类采纳附表供给的词根表中规定的字母;表名由英文单词构成,保险类型和业务种类的首字母大写,表的英文名采纳小写形式,单词可采纳缩写形式;当一个对象继承主对象时,表此刻数据表上则使用“_”切割;举例:PrpCmain_Cargo:货物运输保险保单信息表,继承了保单基本信息。附表供给的词根表作为构词的独一依照。本小节规范合用于各样语言版本的系统。数据库字段命名规范字段长度:不超出INFORMIX规定字段长度(十八位);采纳英文形式,规则以下:字段名由英文单词构成,每个单词首字母大写;举例:保单号码:PolicyNo一个字段名所用的单词不超出5个,在

4、字段名不超出规定长度的状况下,尽量采纳英文单词的全称;3.在字段名总长度超长的状况下,不缩略核心单词,其余单词缩略不短于3个字母;4.形容词定语放在所修饰名词的后边;举例:损失金额:SumLoss附表供给的词根表作为构词的独一依照。本小节规范合用于各样语言版本的系统。程序(文件)模块命名长度:不超出INFORMIX规定长度(十位);采纳英文形式,规则以下:以对象名开头(第一个字母大写),后接对象操作名(第一个字母大写);命名规则:ObjectOpt.4gl此中,Object是对象名。数据层默以为基本表名。如果表名超出10位。则依照缩略规则履行。BL层模块区分及命名:原则上每个BL层的对象对应两

5、个模块,一个对象主模块,一个模块寄存归属于该对象的模块变量。当且仅当主模块中内容过多时,依照以下规则区分:objectRd.4gl:寄存波及到查问(读)数据库的服务函数objectWt.4gl:寄存波及到更新(写)数据库的服务函数objectTx.4gl:寄存事务服务函数objectLg.4gl:寄存不波及数据库操作的服务函数DB层模块区分及命名:全局动向数组(DE):关于数据层的实体对象服务模块,它们一般由工具生成,文件名一般要与实体对象名一致,除非表名超出10位,此时参照词根表进行命名。注意表名或许词根表是命名仅有的参照依照。此外,除了通用服务以外,有些实体对象需要一些扩展的服务,这些服务

6、放在实体对象服务模块的最后定义;函数命名规范采纳由大小写英文字母和“_”构成方式,规则以下;直接调用的工具函数命名公式pub_”+”对象名”+”+“函数名”此中:对象名和函数名区分大小写对象服务函数命名因为INFORMIX-4GL语言不是面向对象的开发语言,因此在程序设计中的对象服务是以函数的方式表现的;一般函数命名公式:作用范围+”+对象名+”_+”对象的方法此中:作用范围包含pub/pri,对象名和方法名区分大小写举例:逻辑层险种对象BLPrpDrisk的增添操作add所对应的函数名为:pub_BLPrpDrisk_Add数据层代码对象DBPrpDcode的delete操作所对应的函数名为

7、:pub_DBPrpDcode_Delete界面层保单对象UIPolicy的录入操作对应的函数名为:pub_UIPolicy_Input事务型的函数(或模块)命名规范拜见3.2.5(数据库事务编写商定)数据层扩展服务函数命名:假如存在某数据表TableName的数据层服务,其功能是获得表中某字段ColumnName的最大值,则该数据层服务函数名定义为:pub_DBTableName_GetMaxColumnName假如某两层构造数据表TableName的字段名为Col,现存在数据层服务,其功能是依据Col删除表中数据,则该数据层服务函数名定义为:sa_tablenamesc_tablename

8、pub_DBTableName_DeleteByCol假如某两层构造数据表TableName主键为id和no,每个id下包含若干no,现存在数据层服务,其功能是依据id删除表中数据,则该数据层服务函数名定义为:pub_DBTableName_DeleteByIN假如某数据表TableName主键为id、no和col,现存在数据层服务,其功能是依据id和no删除表中数据,则该数据层服务函数名定义为:pub_DBTableName_DeleteByINC也就是说,此时只取波及的字段的首字母,写在函数名的最后。屏幕表格命名屏幕FORM名应与有关数据表或主调用文件保持一致;采纳英文形式,规则以下:以对

9、象名开头(第一个字母大写),后接对象操作名(第一个字母大写);命名规则:ObjOpt.per,此中Obj是对象名,Opt是对象操作名。举例:“主保单录入”屏幕表格名称为CmainInp.per“保单查问”屏幕表格名为CmainQry.per“保单清单显示”屏幕表格名为CmainLst.per假如一个屏幕表格被用于录入、查问等多种功能,功能名为:main;举例:主保单录入、查问的通用屏幕表格名为:CmainMain.per假如一个屏幕表格被用于非录入、查问等多种功能,功能名为:pub。举例:主保单非录入、查问的通用屏幕表格名为:CmainPub.per屏幕记录:以小写字母命名,形式为屏幕数组:以

10、小写字母命名,形式为窗口和游标命名采纳由小写英文字母和“_”构成方式,规则以下;窗口命名以功能名开头,后接win,以“_分”隔。举例:某项功能需要以屏幕表格的方式翻开窗口,该功能主要实现权限记录的增加。功能名为grade_add,则窗口命名为:grade_add_win。OPENWINDOWgrade_add_winAT2,2WITHFORM“GradeMain”CLOSEWINDOWgrade_add_win游标命名游标的命名规则同窗口,只可是以cur结尾;举例:某功能需以预办理+游标的方式从表prpgrade获得数据。设功能名为prpgrade_sel,则预办理命名为:prpgrade_s

11、el_pre,游标命名为prpgrade_sel_curPREPAREprpgrade_sel_preFROMlv_sqlDECLAREprpgrade_sel_curCURSORFORprpgrade_sel_preFOREACHprpgrade_sel_curINTOsel_var_listENDFOREACH假如在同一个程序模块内,游标的命名重复,可在结尾处加序号与以差别,序号从开始,挨次递加。常量和变量命名命名公式:常量名称=变量作用域前缀+变量种类+自定义名称注意:自定义名称要有必定的意义且整个常量名称所有大写变量名称=变量作用域前缀+变量种类+自定义名称注意:自定义名称要有必定的意

12、义且整个常量名称所有小写除了对象以外,常量和变量也需要优秀格式的命名商定。常量或变量应当老是被定义在尽可能小的范围内。全局(Global)变量能够致使极其复杂的状态机构,而且使一个应用程序的逻辑特别难于理解。全局变量也使代码的重用和保护更为困难。较好的编码习惯是尽可能写模块化的代码。除了全局变量(应当是不被传达的),过程和函数应当仅对传达给它们的对象操作。在过程中使用的全局变量应当在过程开端处的申明部分中表记出来。作用范围前缀例子全局ggr_prpcmain模块级ppv_sql当地到过程llv_count传入参数iir_prpcmain常量/变量种类前缀例子构造rgr_prpcmain数组ap

13、a_count10其余vlv_proposalno描绘变量变量主体应当使用小写形式,而且应当足够长以描绘它的作用。关于屡次使用的或长的项,介绍使用标准缩略语以使名称的长度合理化。当使用缩略语时,要保证它们在整个应用程序中的一致性。在一个工程中,假如一会儿使用proposalno代表投保单号码,一会使用prpsalno代表保单号码,将致使不用要的混杂。变量使用依照以下几条规则:函数内部定义的每一个变量在使用以前都一定初始化,初始化地区以/-INIT开头和-/结尾。便于工具能够按期检查变量能否初始化或许初始化能否正确,在函数内部的变量初始化地区,严格依照上述规定检查;关于数组的初始化,一定采纳IN

14、ITIALIZE数组TONULL,不要采纳循环一条条记录进行初始化,除非需要针对数组记录中的某个字段特别赋值;比方:定义数组变量la_prptplanARRAY20OFRECORDLIKEPrpTplan初.*,始化时直接用INITIALIZEla_prptplanTONULL,不要使用:FORi=1TO20INITIALIZEla_prptplani.*TONULLENDFOR对象化后的系统不同意使用模块变量;终端版系统应优化算法,尽量防止使用数组,不同意使用大数组;变量定义及初始化举比以下:FUNCTIONpub_BLPrpCaddress_Ini()DEFINElr_prpcaddres

15、sRECORDLIKEPrpCaddress.*,la_prpcaddressARRAY20OFRECORDLIKEPrpCaddress.*,lv_prpcaddress_countSMALLINT,lv_resultINTEGER#/-INIT#-变量初始化INITIALIZElr_prpcaddress.*TONULLINITIALIZEla_prpcaddressTONULL初#始-化数组变量LETlv_prpcaddress_count=0LETlv_result=0#-/CALLpub_DEPrpCaddress_GetRec()RETURNINGlr_prpcaddress.*E

16、NDFUNCTION1.2说明规范优秀的程序说明有助于帮助我们认识程序的实现,也能够对程序言件进行必定量统计剖析。商定以下:程序说明是程序言件的一个重要构成部分,中英文说明均可(考虑到各样平台对中文的支持,建议用英文);INFORMIX-4GL的说明有三种:#、-、。分单行说明和多行说明两种。单行注释以-开头。多行说明以#开头。除了暂时的说明(调试程序使用),禁止使用。为了对4GL文件进行必定量的统计剖析,规范代码的编写质量。拟订了一组注释框架来对4GL程序进行说明。规则以下:程序言件部分的说明程序言件头的说明说明主要包含该程序言件包含类的名称(CLASS)、类的功能描绘(DESC)、文件创立

17、作者(AUTHOR)、创立日期(CREATEDATE)、及更新列表(MODIFYLIST)等信息。还包含类的成员包含公有和私有。举例:#/-CLASSDBPrpDkind#DESC类功能描绘#AUTHOR创立者名称#CREATEDATEYYYY/MM/DD#MODIFYLIST#NAMEDATEREASONWuPeng2002/03/13优化save函数,提升效率SunRibo2002/03/14增PremiumCal函数计算保费#-/说明:MODIFYLIST中#后一个空格,NAME,DATE,REASON和其内容都要左对齐,NAME宽8列,后来一个空格,而后是DATE宽10列,后来一个空格

18、,而后是REASON,假如REASON需要折行,另起一行,仍和REASON对齐#/-PUBLICPROPERTIESGLOBALDEFINEgr_prpcmainRECORDLIKEprpcmain.*ENDGLOBAL#-/#/-PRIVATEPROPERTIESDEFINEpr_prpcmainRECORDLIKEPrpCmain.*DEFINEpv_proposalnoLIKEPprpTmain.ProposalNo-*投保单号#-/函数部分的说明每一函数(或过程)都应包含该函数(或过程)的说明部分包含一个METHOD框架。描绘实现的功能简介、输出参数说明等方面的描绘。在函数内部变量定义

19、前包含该函数RETURN的框架,以/-RETURN开头和-/结尾,关于无返回值和有返回值的RETURN描绘规则以下:1、无返回值的RETURN书写规则:#/-RETURN#VARIABLEDEFINEREMARK#-/2、有返回值的RETURN书写规则:#/-RETURN#VARIABLEDEFINEREMARK#lv_resultsmallint返回的sql值#lr_prpcmainPrpCmain.*数据库表记录#lv_amountDECIMAL(16,2)#lv_policynoPrpCmain.PolicyNo保单号#lr_sumpolicySELFDEFINE#NONETRUE/FA

20、LSE#NONE-1/0/100失败/成功/没找到#-/3、有返回值且说明超出一行的RETURN书写规则:#/-RETURN#VARIABLEDEFINEREMARK#lv_resultsmallint返回的sql值#:成0功;1失败#lr_prpcmainPrpCmain.*数据库表记录#lv_amount#lv_policyno对应保单主表DECIMAL(16,2)PrpCmain.PolicyNo保单号#lr_sumpolicy#NONE#NONESELFDEFINETRUE/FALSE-1/0/100失败/成功/没找到#-/说明:1)#-RETURN、VARIABLE、DEFINE、R

21、EMARK所内行为固定格式;2)每行只好说明一个返回值,返回值说明的先后与函数实质返回次序一致;3)VARIABLE、DEFINE、REMARK和其内容要左对齐;4)关于REMARK一行不够的话,在说明后补反斜杠”,另起一行,和上一行的说明内容左对齐。5)DEFINE节俭定:关于LIKE型的变量,该处写出表名.*,或许表名.字段名,如:PrpCmain.*,PrpCmain.PolicyNo;关于DECIMAL种类,一定写出精度,如DECIMAL(16,2)。(6)假如变量为自定义的构造,在DEFINESELFDEFINE行填写;(7)假如返回值不是变量,VARIABLE项固定为NONE,DE

22、FINE项排列出返回数值,用“/”分开;(8)该规则地点放在函数中的PARAMETER节以前。举比以下:#/-METHOD#DESC依据主键获得PrpCfee表的记录#-/FUNCTIONpub_DBPrpCfee_GetInfo(iv_policyno,iv_currency)#/-RETURN#VARIABLEDEFINEREMARK#lr_PrpCfee.*PrpCfee.*保额保费记录#lv_retSMALLINT#-/#/-PARAMETERDEFINEiv_policynoLIKEPrpCfee.policynoDEFINEiv_currencyLIKEPrpCfee.curren

23、cy#-/在函数内部变量定义的同时包含一个PARAMETER框架,以/-PARAMETER开头和-/结尾,用来说明函数的入参及入参的种类。举例:#/-METHOD#DESC函数描绘#RETURNSMALLINT函-数返回值#INTEGER其-他返回值#-/FUNCTIONpub_DBPrpCmain_Insert(iv_prpcmain.*)#/-PARAMETER-PrpCmain表纪录DEFINEiv_cmainRECORDLIKEPrpCmain.*#-/DEFINElv_resultINTEGER.ENDFUNCTION函数(过程)程序的增、删、改的说明说明商定程序的这几种操作包含在说

24、明重点字MODIFY中。说明以”-*MODIFY”开头,此中MODIFY与”*”之间不可以有空格,框架中包含说明人姓名(一定),操作DELETE/ADD/UPDATE(一定),操作时间(一定),地址(一定),必需时说明操作原因。举例:(空行)-*MODIFYBEGINSunribo,DELETE,2002-03-15,beijing,程序逻辑错误(空行)#FUNCTIONpub_DBPrpDkind_Update(ir_prpdkind)#.#.#ENDFUNCTION(空行)-*MODIFYENDSunribo,DELETE,2002-03-15,beijing(空行)记着以下几点:程序增、

25、删、改的说明应当准时整理。无用的说明实时清理掉。所有的变量定义以后都要加上能够说明其用途的说明。函数体内部的代码段改正说明在函数中改正代码段应在所改正代码段首尾处增添说明,在结尾处应将缩增添第一处说明的改正人、改正信息和重点字等信息重复一次,并将第一处的BEGIN改为结束标记END所增添说明应与所说明代码段保持相同缩进,并与所说明代码段间上下各保存一空行以便于阅读。别的,在进行BUG改正或增补功能开发时应将BUG编号或功能编号书写在说明中,作为与功能有关的表记。举例:(空行)-*MODIFYBEGINSunribo,DELETE,2002-03-15,beijing,FORIBUG2111(空

26、行)LETlr_prptmain.ProposalNo=”LETlr_prptmain.RiskCode=”QZA”(空行)-*MODIFYENDSunribo,DELETE,2002-03-15,beijing(空行)函数体内部的代码段说明商定在程序中开始大的代码段以前,要加入特别的说明,用于标记说明下边代码段的功能。此类说明以#-开头,缩进和代码段的缩进相同,同时这类说明需要配以齐整的标号,以增添可读性,便于理解。举例:#-1.查问出所有从开端节点出发的路径#-2.挨次将这些路径拿出并放入一个数组#-3.封闭取路径的游标#-4.循环判断路径能否知足条件,并标记知足条件的记录#-5.选出所有

27、选中的路径中优先级最高的进行返回1.3书写规范基来源则编码要清楚工整,保证程序的可读性、系统的可保护性:在任何状况下都不可以使用TAB键;程序中一律采纳4个空格的缩进;除了”,”运算符以外,所有的运算符和操作数之间都要加一个空格;一个代码行物理上不可以超出屏幕规定的缺省最大宽度(80列),即不可以产生折行,假如逻辑行长度超出80,除了函数定义或许调用语句依据函参折行对齐、DEFINE语句依据变量折行对齐以外,其余状况一律将超长部分另起一行空4格后书写;成对出现的语句开端和结束重点字一定左对齐书写。UI-BL-DB三层同意前端调用后端(UIBL,UIDB,BLDB),不同意出现后端反调前端的状况

28、;举例:IFTHEN.ENDIFWHILEconditiondoENDWHILEFUNCTIONabc().ENDFUNCTION保存字引用规则编码中引用的所有保存字均一定大写;程序说明供给的重点字:AUTHORCREATEDATEDESCPARAMETERRETURNPUBLICPROPERTIESPRIVATEPROPERTIESCLASSMODIFYMODIFYLISTINFORMIX-4GL供给的保存字:SELECTUPDATEDELETEINSERTIFTHENELSECASEWHENOTHERWISEENDFUNCTIONPROCEDUREWHILEEXITINFORMIX-4GL

29、供给的系统变量、函数一律大写;举例:INT_FLAG、ARR_COUNT、SET_COUNT等语句LET语句一行能写下就写在一行,逻辑行长度大于80时依照逻辑表达式拆分后,另起一行空4格后书写。举例:LETlv_where_part=a.UserName=e.UserCodeAND,e.GroupNo=d.GroupNoAND,e.ModelNo=,lr_wflog.ModelNo,AND,e.NodeNo=,lr_wflog.NodeNo语句IF以后的逻辑表达式一行能写下就写在一行,逻辑行长度大于80时依照逻辑表达式拆分后,另起一行空4格后书写。关于IF加上以后的条件假如足够在一行的话,TH

30、EN跟在后边,不然独自占一行。所有的逻辑运算符(AND,OR)一律放在每行开始。禁止使用ELSEIF语句,能够采纳CASE语句改写。举例:IFlr_prptmain.ProposalNoISNULLTHENERROR该字段不同意为空,请从头输入!ENDIFIFlr_prptmain.ProposalNoISNULLORLENGTH(lr_prptmain.ProposalNo)=0THENERROR该字段不同意为空,请从头输入!NEXTFIELDProposalNoELSE。ENDIF此外,控制分支构造较为复杂时,用CASE语句取代一系列IF语句,必需的时候另外组织函数,宁愿牺牲一些资源,也要保持程序言件的清楚程度。语句DEFINE语句一定和FUNCTION对齐书写。每个函数的入参都要独自使用一个DEFINE语句。函数体内用到的变量定义时依照变量对齐。变量种类说明的对齐方式不做要求。语句CALL语句的书写原则是:假如一行能写下,就不将RETURNING语句折行书写,假如写不下,将RETURNING折行缩进4格书写.假如函参过多一行写不下,将参数折行左对齐CALL的第一参数书写,返回参数做相同办

温馨提示

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

评论

0/150

提交评论