4gl語(yǔ)言開發(fā)原則及規(guī)范--簡(jiǎn)化版_第1頁(yè)
4gl語(yǔ)言開發(fā)原則及規(guī)范--簡(jiǎn)化版_第2頁(yè)
4gl語(yǔ)言開發(fā)原則及規(guī)范--簡(jiǎn)化版_第3頁(yè)
4gl語(yǔ)言開發(fā)原則及規(guī)范--簡(jiǎn)化版_第4頁(yè)
4gl語(yǔ)言開發(fā)原則及規(guī)范--簡(jiǎn)化版_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范PICC 新一代綜合業(yè)務(wù)系統(tǒng)項(xiàng)目組 i 4GL4GL 語(yǔ)言開發(fā)原則及規(guī)范語(yǔ)言開發(fā)原則及規(guī)范中科軟件股份有限公司中科軟件股份有限公司20022002 年年 0404 月月 2727 日日FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范PICC 新一代綜合業(yè)務(wù)系統(tǒng)項(xiàng)目組 ii 目目 錄錄1 1編碼規(guī)范編碼規(guī)范.11.1命名規(guī)范.11.1.1對(duì)象命名.11.1.2常量和變量命名.51.2注釋規(guī)范.71.2.1程序文件部分的注釋.81.2.2函數(shù)部分的注釋.91.2.3函數(shù)(過(guò)程)程序的增、刪、改的注釋說(shuō)明約定.111.2.4函數(shù)體內(nèi)部的代碼段修改注釋.12

2、1.2.5函數(shù)體內(nèi)部的代碼段說(shuō)明約定.131.3書寫規(guī)范.131.3.1基本原則.131.3.2保留字引用規(guī)則.141.3.3LET 語(yǔ)句.141.3.4IF 語(yǔ)句.151.3.5DEFINE 語(yǔ)句.151.3.6CALL 語(yǔ)句.161.3.7函數(shù)體內(nèi)部組織.161.4注意事項(xiàng).18FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 11 1 編碼規(guī)范編碼規(guī)范1.11.1 命名規(guī)范命名規(guī)范1.1.1對(duì)象命名 數(shù)據(jù)庫(kù)命名規(guī)范數(shù)據(jù)庫(kù)命名規(guī)范數(shù)據(jù)庫(kù)名長(zhǎng)度:不超過(guò) INFORMIX 規(guī)定長(zhǎng)度(十八位);采用英文形式,規(guī)則如下:數(shù)據(jù)庫(kù)名由兩部分組成:系統(tǒng)名+D

3、B;舉例:財(cái)產(chǎn)保險(xiǎn)業(yè)務(wù)處理系統(tǒng)的數(shù)據(jù)庫(kù)命名為:PrpInsDB系統(tǒng)名由英文單詞構(gòu)成,每個(gè)單詞首字母大寫,單詞可采取縮寫形式;附表提供的詞根表作為構(gòu)詞的唯一依據(jù)。本小節(jié)規(guī)范適用于各種語(yǔ)言版本的系統(tǒng)。 數(shù)據(jù)庫(kù)表命名規(guī)范數(shù)據(jù)庫(kù)表命名規(guī)范數(shù)據(jù)庫(kù)表名長(zhǎng)度:不超過(guò) INFORMIX 規(guī)定長(zhǎng)度(十八位);采用英文和“_”組成形式,規(guī)則如下:數(shù)據(jù)庫(kù)表名由三部分組成:系統(tǒng)名+業(yè)務(wù)類型+表的英文名(+“_”+子對(duì)象名),業(yè)務(wù)類型用 1 位大寫字母表示,如承保業(yè)務(wù)為 C、批改業(yè)務(wù)為 P、理賠業(yè)務(wù)為 L、收付費(fèi)業(yè)務(wù)的數(shù)據(jù)表為 J、通用代碼為 D;舉例:財(cái)產(chǎn)保險(xiǎn)承保保單基本信息表命名為:Pr

4、pCmain;貨物運(yùn)輸保險(xiǎn)保單信息表(繼承了保單基本信息):PrpCmain_Cargo。業(yè)務(wù)類型采用附表提供的詞根表中規(guī)定的字母;表名由英文單詞構(gòu)成,保險(xiǎn)類別和業(yè)務(wù)類型的首字母大寫,表的英文名采取小寫形式,單詞可采取縮寫形式;當(dāng)一個(gè)對(duì)象繼承主對(duì)象時(shí),體現(xiàn)在數(shù)據(jù)表上則使用“_”分割;舉例: PrpCmain_Cargo:貨物運(yùn)輸保險(xiǎn)保單信息表,繼承了保單基本信息。FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 2附表提供的詞根表作為構(gòu)詞的唯一依據(jù)。本小節(jié)規(guī)范適用于各種語(yǔ)言版本的系統(tǒng)。 數(shù)據(jù)庫(kù)字段命名規(guī)范數(shù)據(jù)庫(kù)字段命名規(guī)范字段長(zhǎng)度:不超過(guò) INFO

5、RMIX 規(guī)定字段長(zhǎng)度(十八位);采用英文形式,規(guī)則如下:1. 字段名由英文單詞構(gòu)成,每個(gè)單詞首字母大寫;舉例: 保單號(hào)碼:PolicyNo2. 一個(gè)字段名所用的單詞不超過(guò) 5 個(gè),在字段名不超過(guò)規(guī)定長(zhǎng)度的情況下,盡量采用英文單詞的全稱;3. 在字段名總長(zhǎng)度超長(zhǎng)的情況下,不縮略核心單詞,其他單詞縮略不短于 3 個(gè)字母;4. 形容詞定語(yǔ)放在所修飾名詞的后面;舉例:損失金額:SumLoss附表提供的詞根表作為構(gòu)詞的唯一依據(jù)。本小節(jié)規(guī)范適用于各種語(yǔ)言版本的系統(tǒng)。 程序(文件)模塊命名程序(文件)模塊命名長(zhǎng)度:不超過(guò) INFORMIX 規(guī)定長(zhǎng)度(十位);采用英文形式,規(guī)則如

6、下:以對(duì)象名開頭(第一個(gè)字母大寫),后接對(duì)象操作名(第一個(gè)字母大寫);命名規(guī)則:ObjectOpt.4gl 其中,Object 是對(duì)象名。數(shù)據(jù)層默認(rèn)為基本表名。如果表名超過(guò) 10 位。則按照縮略規(guī)則執(zhí)行。BL 層模塊劃分及命名:原則上每個(gè) BL 層的對(duì)象對(duì)應(yīng)兩個(gè)模塊,一個(gè)對(duì)象主模塊,一個(gè)模塊存放歸屬于該對(duì)象的模塊變量。當(dāng)且僅當(dāng)主模塊中內(nèi)容過(guò)多時(shí),按照如下規(guī)則劃分:objectRd.4gl:存放涉及到查詢(讀)數(shù)據(jù)庫(kù)的服務(wù)函數(shù)objectWt.4gl:存放涉及到更新(寫)數(shù)據(jù)庫(kù)的服務(wù)函數(shù)objectTx.4gl:存放事務(wù)服務(wù)函數(shù)objectLg.4gl:存放不涉及數(shù)據(jù)庫(kù)操作的服務(wù)函數(shù)FI-PIC

7、CALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 3DB 層模塊劃分及命名:全局動(dòng)態(tài)數(shù)組(DE):對(duì)于數(shù)據(jù)層的實(shí)體對(duì)象服務(wù)模塊,它們一般由工具生成,文件名一般要與實(shí)體對(duì)象名一致,除非表名超過(guò) 10 位,此時(shí)參考詞根表進(jìn)行命名。注意表名或者詞根表是命名僅有的參考依據(jù)。另外,除了通用服務(wù)以外,有些實(shí)體對(duì)象需要一些擴(kuò)展的服務(wù),這些服務(wù)放在實(shí)體對(duì)象服務(wù)模塊的最后定義; 函數(shù)命名規(guī)范函數(shù)命名規(guī)范采用由大小寫英文字母和“_”組成方式,規(guī)則如下;直接調(diào)用的工具函數(shù)命名公式pub_” + ”對(duì)象名” + ”_” + “函數(shù)名”其中:對(duì)象名和函數(shù)名區(qū)分大小寫對(duì)象服務(wù)函數(shù)命名由于

8、 INFORMIX-4GL 語(yǔ)言不是面向?qū)ο蟮拈_發(fā)語(yǔ)言,因而在程序設(shè)計(jì)中的對(duì)象服務(wù)是以函數(shù)的方式體現(xiàn)的;一般函數(shù)命名公式:作用范圍+”_”+對(duì)象名+”_”+對(duì)象的方法其中:作用范圍包括 pub/pri,對(duì)象名和方法名區(qū)分大小寫舉例:邏輯層險(xiǎn)種對(duì)象 BLPrpDrisk 的增加操作 add 所對(duì)應(yīng)的函數(shù)名為:pub_BLPrpDrisk_Add數(shù)據(jù)層代碼對(duì)象 DBPrpDcode 的 delete 操作 所對(duì)應(yīng)的函數(shù)名為:pub_DBPrpDcode_Delete界面層保單對(duì)象 UIPolicy 的 錄入操作對(duì)應(yīng)的函數(shù)名為:pub_UIPolicy_Input事務(wù)型的函數(shù)(或模塊)命名規(guī)范參見

9、3.2.5(數(shù)據(jù)庫(kù)事務(wù)編寫約定)數(shù)據(jù)層擴(kuò)展服務(wù)函數(shù)命名:如果存在某數(shù)據(jù)表 TableName 的數(shù)據(jù)層服務(wù),其功能是獲取表中某字段ColumnName 的最大值,則該數(shù)據(jù)層服務(wù)函數(shù)名定義為:pub_DBTableName_GetMaxColumnName如果某兩層結(jié)構(gòu)數(shù)據(jù)表 TableName 的字段名為 Col,現(xiàn)存在數(shù)據(jù)層服務(wù),其功能是根據(jù) Col 刪除表中數(shù)據(jù),則該數(shù)據(jù)層服務(wù)函數(shù)名定義為:FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 4pub_DBTableName_DeleteByCol如果某兩層結(jié)構(gòu)數(shù)據(jù)表 TableName 主鍵為 id 和 no,每個(gè) id

10、下包括若干 no,現(xiàn)存在數(shù)據(jù)層服務(wù),其功能是根據(jù) id 刪除表中數(shù)據(jù),則該數(shù)據(jù)層服務(wù)函數(shù)名定義為:pub_DBTableName_DeleteByIN如果某數(shù)據(jù)表 TableName 主鍵為 id、no 和 col,現(xiàn)存在數(shù)據(jù)層服務(wù),其功能是根據(jù) id 和 no 刪除表中數(shù)據(jù),則該數(shù)據(jù)層服務(wù)函數(shù)名定義為:pub_DBTableName_DeleteByINC也就是說(shuō),此時(shí)只取涉及的字段的首字母,寫在函數(shù)名的最后。 屏幕表格命名屏幕表格命名屏幕 FORM 名應(yīng)與相關(guān)數(shù)據(jù)表或主調(diào)用文件保持一致;采用英文形式,規(guī)則如下:以對(duì)象名開頭(第一個(gè)字母大寫),后接對(duì)象操作名(第一

11、個(gè)字母大寫);命名規(guī)則:ObjOpt.per,其中 Obj 是對(duì)象名,Opt 是對(duì)象操作名。舉例:“主保單錄入”屏幕表格名稱為 CmainInp.per “保單查詢”屏幕表格名為 CmainQry.per “保單清單顯示”屏幕表格名為 CmainLst.per如果一個(gè)屏幕表格被用于錄入、查詢等多種功能,功能名為:main;舉例:主保單錄入、查詢的通用屏幕表格名為:CmainMain.per如果一個(gè)屏幕表格被用于非錄入、查詢等多種功能,功能名為:pub。舉例:主保單非錄入、查詢的通用屏幕表格名為:CmainPub.per屏幕記錄:以小寫字母命名,形式為 sc_tablename屏幕數(shù)組:以小寫字

12、母命名,形式為 sa_tablename 窗口和游標(biāo)命名窗口和游標(biāo)命名采用由小寫英文字母和“_”組成方式,規(guī)則如下;窗口命名以功能名開頭,后接 win,以“_”分隔。舉例:某項(xiàng)功能需要以屏幕表格的方式打開窗口,該功能主要實(shí)現(xiàn)權(quán)限記錄的增加。功能名為 grade_add,則窗口命名為:grade_add_win。FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 5OPEN WINDOW grade_add_win AT 2,2 WITH FORM “GradeMain” CLOSE WINDOW grade_add_win游標(biāo)命名游標(biāo)的命名規(guī)則同窗口

13、,只不過(guò)以 cur 結(jié)尾;舉例:某功能需以預(yù)處理+游標(biāo)的方式從表 prpgrade 獲取數(shù)據(jù)。設(shè)功能名為 prpgrade_sel,則預(yù)處理命名為:prpgrade_sel_pre,游標(biāo)命名為 prpgrade_sel_curPREPARE prpgrade_sel_pre FROM lv_sqlDECLARE prpgrade_sel_cur CURSOR FOR prpgrade_sel_preFOREACH prpgrade_sel_cur INTO sel_var_listEND FOREACH如果在同一個(gè)程序模塊內(nèi),游標(biāo)的命名重復(fù),可在結(jié)尾處加序號(hào)與以區(qū)別,序號(hào)從1 開始,依次遞增。

14、1.1.2常量和變量命名命名公式:常量名稱=變量作用域前綴+變量類型+_+自定義名稱注意:自定義名稱要有一定的意義且整個(gè)常量名稱全部大寫變量名稱=變量作用域前綴+變量類型+_+自定義名稱注意:自定義名稱要有一定的意義且整個(gè)常量名稱全部小寫除了對(duì)象之外,常量和變量也需要良好格式的命名約定。常量或變量應(yīng)該總是被定義在盡可能小的范圍內(nèi)。全局 (Global) 變量可以導(dǎo)致極其復(fù)雜的狀態(tài)機(jī)構(gòu),并且使一個(gè)應(yīng)用程序的邏輯非常難于理解。全局變量也使代碼的重用和維護(hù)更加困難。較好的編碼習(xí)慣是盡可能寫模塊化的代碼。除了全局變量(應(yīng)該是不被傳遞的),過(guò)程和函數(shù)應(yīng)該僅對(duì)傳遞給它們的對(duì)象操作。在過(guò)程中使用的全局變量應(yīng)

15、該在過(guò)程起始處的聲明部分中標(biāo)識(shí)出來(lái)。FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 6作用范圍前綴例子全局ggr_prpcmain模塊級(jí)ppv_sql本地到過(guò)程llv_count傳入?yún)?shù)iir_prpcmain常量/變量類型前綴例子結(jié)構(gòu)rgr_prpcmain數(shù)組apa_count10其他vlv_proposalno描述變量變量主體應(yīng)該使用小寫形式,并且應(yīng)該足夠長(zhǎng)以描述它的作用。對(duì)于頻繁使用的或長(zhǎng)的項(xiàng),推薦使用標(biāo)準(zhǔn)縮略語(yǔ)以使名稱的長(zhǎng)度合理化。當(dāng)使用縮略語(yǔ)時(shí),要確保它們?cè)谡麄€(gè)應(yīng)用程序中的一致性。在一個(gè)工程中,如果一會(huì)兒使用 proposalno 代表投保單號(hào)碼,一會(huì)使用 pr

16、psalno 代表保單號(hào)碼,將導(dǎo)致不必要的混淆。變量使用遵循如下幾條規(guī)則:函數(shù)內(nèi)部定義的每一個(gè)變量在使用之前都必須初始化,初始化區(qū)域以/-INIT開頭和-/結(jié)尾。便于工具能夠定期檢查變量是否初始化或者初始化是否正確,在函數(shù)內(nèi)部的變量初始化區(qū)域,嚴(yán)格按照上述規(guī)定檢查;對(duì)于數(shù)組的初始化,必須采用 INITIALIZE 數(shù)組 TO NULL,不要采用循環(huán)一條條記錄進(jìn)行初始化,除非需要針對(duì)數(shù)組記錄中的某個(gè)字段特殊賦值;比如:定義數(shù)組變量 la_prptplan ARRAY20 OF RECORD LIKE PrpTplan.*, 初始化時(shí)直接用 INITIALIZE la_prptplan TO NU

17、LL,不要使用:FOR i=1 TO 20INITIALIZE la_prptplani.* TO NULL END FOR對(duì)象化后的系統(tǒng)不允許使用模塊變量;終端版系統(tǒng)應(yīng)優(yōu)化算法,盡量避免使用數(shù)組,不允許使用大數(shù)組;FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 7變量定義及初始化舉例如下:FUNCTION pub_BLPrpCaddress_Ini( )DEFINE lr_prpcaddress RECORD LIKE PrpCaddress.*, la_prpcaddress ARRAY20 OF RECORD LIKE PrpCaddress.*, lv_prpcad

18、dress_count SMALLINT,lv_result INTEGER #/-INIT #-變量初始化 INITIALIZE lr_prpcaddress.* TO NULL INITIALIZE la_prpcaddress TO NULL #-初始化數(shù)組變量 LET lv_prpcaddress_count=0 LET lv_result=0 #-/ CALL pub_DEPrpCaddress_GetRec() RETURNING lr_prpcaddress.* END FUNCTION1.21.2 注釋規(guī)范注釋規(guī)范良好的程序注釋有助于幫助我們了解程序的實(shí)現(xiàn),也可以對(duì)程序文件進(jìn)行

19、一定量統(tǒng)計(jì)分析。約定如下:程序注釋是程序文件的一個(gè)重要組成部分,中英文注釋均可(考慮到各種平臺(tái)對(duì)中文的支持,建議用英文);INFORMIX-4GL 的注釋有三種:#、-、。分單行注釋和多行注釋兩種。單行注釋以-開頭。多行注釋以#開頭。除了臨時(shí)的注釋(調(diào)試程序使用),嚴(yán)禁使用。為了對(duì) 4GL 文件進(jìn)行一定量的統(tǒng)計(jì)分析,規(guī)范代碼的編寫質(zhì)量。制定了一組注釋框架來(lái)對(duì) 4GL 程序進(jìn)行說(shuō)明。規(guī)則如下:FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 81.2.1程序文件部分的注釋程序文件頭的注釋說(shuō)明主要包括該程序文件包含類的名稱(CLASS)、類的功能描述(DESC)、文件創(chuàng)建作者(A

20、UTHOR)、創(chuàng)建日期(CREATEDATE)、及更新列表(MODIFYLIST)等信息。還包括類的成員包括公有和私有。舉例:#/-CLASS DBPrpDkind#DESC類功能描述#AUTHOR 創(chuàng)建者名稱#CREATEDATE YYYY/MM/DD#MODIFYLIST# NAME DATE REASON# WuPeng 2002/03/13 優(yōu)化 save 函數(shù),提高效率# SunRibo 2002/03/14 增 PremiumCal 函數(shù)計(jì)算保費(fèi)#-/說(shuō)明:MODIFYLIST 中#后一個(gè)空格,NAME,DATE,REASON 和其內(nèi)容都要左對(duì)齊,NAME 寬8 列,其后一個(gè)空格,

21、然后是 DATE 寬 10 列,其后一個(gè)空格,然后是 REASON,如果 REASON需要折行,另起一行,仍和 REASON 對(duì)齊#/-PUBLICPROPERTIESGLOBALDEFINE gr_prpcmain RECORD LIKE prpcmain.*END GLOBAL#-/#/-PRIVATEPROPERTIESDEFINE pr_prpcmainRECORD LIKE PrpCmain.*DEFINE pv_proposalno LIKE PprpTmain.ProposalNo-*投保單號(hào)#-/FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 91.2.2函

22、數(shù)部分的注釋每一函數(shù)(或過(guò)程)都應(yīng)包括該函數(shù)(或過(guò)程)的注釋部分包括一個(gè) METHOD 框架。描述實(shí)現(xiàn)的功能簡(jiǎn)介、輸出參數(shù)說(shuō)明等方面的描述。在函數(shù)內(nèi)部變量定義前包括該函數(shù) RETURN 的框架,以/-RETURN 開頭和-/結(jié)尾,對(duì)于無(wú)返回值和有返回值的 RETURN 描述規(guī)則如下:1 1、無(wú)返回值的、無(wú)返回值的 RETURNRETURN 書寫規(guī)則:書寫規(guī)則:#/-RETURN# # VARIABLEVARIABLE DEFINEDEFINE REMARKREMARK#-/#-/2 2、有返回值的、有返回值的 RETURNRETURN 書寫規(guī)則:書寫規(guī)則:#/-RETURN# # VARIAB

23、LEVARIABLE DEFINEDEFINE REMARKREMARK# # lv_result smallint 返回的 sql 值# # lr_prpcmain PrpCmain.* 數(shù)據(jù)庫(kù)表記錄 # # lv_amountlv_amount DECIMAL(16,2)DECIMAL(16,2)# # lv_policyno PrpCmain.PolicyNo 保單號(hào)# # lr_sumpolicy SELFDEFINESELFDEFINE# # NONE TRUE/FALSE # # NONE -1/0/100 失敗/成功/沒找到#-/#-/3 3、有返回值且注釋超過(guò)一行的、有返回值且

24、注釋超過(guò)一行的 RETURNRETURN 書寫規(guī)則:書寫規(guī)則:#/-RETURN# # VARIABLEVARIABLE DEFINEDEFINE REMARKREMARK# # lv_result smallint 返回的 sql 值# # 0 0:成功;:成功;1 1 失敗失敗# # lr_prpcmain PrpCmain.* 數(shù)據(jù)庫(kù)表記錄FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 10# # 對(duì)應(yīng)保單主表對(duì)應(yīng)保單主表# # lv_amountlv_amount DECIMAL(16,2)DECIMAL(16,2)# # lv_policyno PrpCmain.

25、PolicyNo 保單號(hào)# # lr_sumpolicy SELFDEFINESELFDEFINE# # NONE TRUE/FALSE # # NONE -1/0/100 失敗/成功/沒找到#-/#-/說(shuō)明:(1)#-RETURN、VARIABLE、DEFINE、REMARK 所在行為固定格式;(2)每行只能注釋一個(gè)返回值,返回值注釋的先后與函數(shù)實(shí)際返回順序一致;(3)VARIABLEVARIABLE、DEFINEDEFINE、REMARKREMARK和其內(nèi)容要左對(duì)齊;(4)對(duì)于對(duì)于 REMARKREMARK 一行不夠的話,在注釋后補(bǔ)反斜杠一行不夠的話,在注釋后補(bǔ)反斜杠” ”, ,另起一行,

26、和上一行的注釋內(nèi)容左對(duì)齊。另起一行,和上一行的注釋內(nèi)容左對(duì)齊。(5)DEFINE 節(jié)約定:對(duì)于 LIKE 型的變量,該處寫出表名.*,或者表名.字段名,如:PrpCmain.*,PrpCmain.PolicyNo;對(duì)于 DECIMAL 類型,必須寫出精度,如 DECIMAL(16,2)。(6)如果變量為自定義的結(jié)構(gòu),在DEFINEDEFINE 行填寫SELFDEFINESELFDEFINE;(7)如果返回值不是變量,VARIABLEVARIABLE項(xiàng)固定為 NONE,DEFINEDEFINE項(xiàng)羅列出返回?cái)?shù)值,用“/”分隔;(8)該規(guī)則位置放在函數(shù)中的 PARAMETER 節(jié)之前。舉例如下:#/

27、-METHOD#DESC 根據(jù)主鍵獲取 PrpCfee 表的記錄#-/FUNCTION pub_DBPrpCfee_GetInfo(iv_policyno,iv_currency)#/-RETURN# VARIABLE DEFINE REMARK# lr_PrpCfee.* PrpCfee.* 保額保費(fèi)記錄# lv_ret SMALLINT #-/#/-PARAMETERDEFINE iv_policyno LIKE PrpCfee.policynoDEFINE iv_currency LIKE PrpCfee.currency#-/FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有

28、限公司 11在函數(shù)內(nèi)部變量定義的同時(shí)包括一個(gè) PARAMETER 框架,以/-PARAMETER 開頭和-/結(jié)尾,用來(lái)說(shuō)明函數(shù)的入?yún)⒓叭雲(yún)⒌念愋?。舉例:#/-METHOD#DESC 函數(shù)描述#RETURN SMALLINT -函數(shù)返回值# INTEGER -其他返回值#-/FUNCTION pub_DBPrpCmain_Insert(iv_prpcmain.*)#/-PARAMETER-PrpCmain 表紀(jì)錄DEFINE iv_cmain RECORD LIKE PrpCmain.*#-/DEFINE lv_result INTEGER. . .END FUNCTION1.2.3函數(shù)(過(guò)程)

29、程序的增、刪、改的注釋說(shuō)明約定程序的這幾種操作包含在注釋關(guān)鍵字 MODIFY 中。注釋以”-*MODIFY”開頭,其中MODIFY 與”*”之間不能有空格,框架中包括注釋人姓名(必須),操作DELETE/ADD/UPDATE(必須),操作時(shí)間(必須),地點(diǎn)(必須),必要時(shí)說(shuō)明操作原因。舉例:(空行)-*MODIFY BEGIN Sunribo,DELETE,2002-03-15,beijing,程序邏輯錯(cuò)誤 (空行)#FUNCTION pub_DBPrpDkind_Update(ir_prpdkind)FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 12#.#.#END F

30、UNCTION(空行)-*MODIFY END Sunribo,DELETE,2002-03-15,beijing (空行)記住下列幾點(diǎn):程序增、刪、改的注釋應(yīng)該按時(shí)整理。無(wú)用的注釋及時(shí)清理掉。所有的變量定義之后都要加上能夠說(shuō)明其用途的注釋。1.2.4函數(shù)體內(nèi)部的代碼段修改注釋在函數(shù)中修改代碼段應(yīng)在所修改代碼段首尾處增加注釋,在結(jié)尾處應(yīng)將縮添加起首處注釋的修改人、修改信息和關(guān)鍵字等信息重復(fù)一次,并將起首處的 BEGIN 改為結(jié)束標(biāo)志 END 所添加注釋應(yīng)與所注釋代碼段保持同樣縮進(jìn),并與所注釋代碼段間上下各保留一空行以便于瀏覽。此外,在進(jìn)行 BUG 修改或補(bǔ)充功能開發(fā)時(shí)應(yīng)將 BUG 編號(hào)或功能編

31、號(hào)書寫在注釋中,作為與功能相關(guān)的標(biāo)識(shí)。舉例:(空行)-*MODIFY BEGIN Sunribo,DELETE,2002-03-15,beijing,FOR IBUG2111 (空行)LET lr_prptmain.ProposalNo=”LET lr_prptmain.RiskCode=”QZA”(空行)-*MODIFY END Sunribo,DELETE,2002-03-15,beijing (空行)FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 131.2.5函數(shù)體內(nèi)部的代碼段說(shuō)明約定在程序中開始大的代碼段之前,要加入特殊的注釋,用于標(biāo)記說(shuō)明下面代碼段的功能。此類注

32、釋以#-開頭,縮進(jìn)和代碼段的縮進(jìn)相同,同時(shí)這種注釋需要配以整齊的標(biāo)號(hào),以增加可讀性,便于理解。舉例: #-1.查詢出所有從起始節(jié)點(diǎn)出發(fā)的路徑 #-2.依次將這些路徑取出并放入一個(gè)數(shù)組 #-3.關(guān)閉取路徑的游標(biāo) #-4.循環(huán)判斷路徑是否滿足條件,并標(biāo)記滿足條件的記錄 #-5.選出所有選中的路徑中優(yōu)先級(jí)最高的進(jìn)行返回1.31.3 書寫規(guī)范書寫規(guī)范1.3.1基本原則編碼要清晰工整,保證程序的可讀性、系統(tǒng)的可維護(hù)性:在任何情況下都不能使用 TAB 鍵;程序中一律采用4個(gè)空格的縮進(jìn);除了”,”運(yùn)算符之外,所有的運(yùn)算符和操作數(shù)之間都要加一個(gè)空格;一個(gè)代碼行物理上不能超過(guò)屏幕規(guī)定的缺省最大寬度(80 列),

33、即不能產(chǎn)生折行,如果邏輯行長(zhǎng)度超過(guò) 80,除了函數(shù)定義或者調(diào)用語(yǔ)句根據(jù)函參折行對(duì)齊、DEFINE 語(yǔ)句根據(jù)變量折行對(duì)齊以外,其他情況一律將超長(zhǎng)部分另起一行空 4 格后書寫;成對(duì)出現(xiàn)的語(yǔ)句起始和結(jié)束關(guān)鍵字必須左對(duì)齊書寫。UI-BL-DB 三層允許前端調(diào)用后端(UIBL,UIDB,BLDB),不允許出現(xiàn)后端反調(diào)前端的情況;舉例:IF THENFI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 14. . . END IFWHILE conditiondo END WHILEFUNCTION abc(). . . END FUNCTION1.3.2保留字引用規(guī)則編碼中引用的所有保留字

34、均必須大寫;程序注釋提供的關(guān)鍵字:AUTHOR CREATEDATE DESC PARAMETER RETURN PUBLICPROPERTIES PRIVATEPROPERTIES CLASS MODIFY MODIFYLISTINFORMIX-4GL 提供的保留字:SELECT UPDATE DELETE INSERT IF THEN ELSE CASE WHEN OTHERWISE END FUNCTION PROCEDURE WHILE EXIT INFORMIX-4GL 提供的系統(tǒng)變量、函數(shù)一律大寫;舉例:INT_FLAG、ARR_COUNT、SET_COUNT 等1.3.3LET

35、語(yǔ)句LET 語(yǔ)句一行能寫下就寫在一行,邏輯行長(zhǎng)度大于 80 時(shí)按照邏輯表達(dá)式拆分后, 另起一行空 4 格后書寫。舉例:LET lv_where_part = a.UserName = e.UserCode AND , e.GroupNo = d.GroupNo AND , e.ModelNo = , lr_wflog.ModelNo, AND ,FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 15 e.NodeNo = , lr_wflog.NodeNo1.3.4IF 語(yǔ)句IF 之后的邏輯表達(dá)式一行能寫下就寫在一行,邏輯行長(zhǎng)度大于 80 時(shí)按照邏輯表達(dá)式拆分后,另起一行空

36、4 格后書寫。對(duì)于 IF 加上之后的條件如果足夠在一行的話,THEN 跟在后面,否則單獨(dú)占一行。所有的邏輯運(yùn)算符(AND,OR)一律放在每行開始。禁止使用 ELSE IF 語(yǔ)句,可以采用 CASE 語(yǔ)句改寫。舉例:IF lr_prptmain.ProposalNo IS NULL THENERROR 該字段不允許為空,請(qǐng)重新輸入!END IFIF lr_prptmain.ProposalNo IS NULLOR LENGTH(lr_prptmain.ProposalNo) = 0 THENERROR 該字段不允許為空,請(qǐng)重新輸入!NEXT FIELD ProposalNoELSE。END IF另外,控制分支結(jié)構(gòu)較為復(fù)雜時(shí),用 CASE 語(yǔ)句代替一系列 IF 語(yǔ)句,必要的時(shí)候另外組織函數(shù),寧可犧牲一些資源,也要保持程序文件的清晰程度。1.3.5DEFINE 語(yǔ)句DEFINE 語(yǔ)句必須和 FUNCTION 對(duì)齊書寫。每個(gè)函數(shù)的入?yún)⒍家獑为?dú)使用一個(gè) DEFINE 語(yǔ)句。FI-PICCALL-SD-設(shè)計(jì)原則及開發(fā)規(guī)范中科軟件股份有限公司 16函數(shù)體內(nèi)用到的變量定義時(shí)按照變量對(duì)齊。變量類型說(shuō)明的對(duì)齊方式不做要求。1.3.6CALL 語(yǔ)句CALL 語(yǔ)句的書寫原則是:如果一行能寫下,就不將 RETURNING 語(yǔ)句折行書寫,如果寫不下,將 RE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論