廣東電信綜合業(yè)務(wù)支撐系統(tǒng)(IBSS)總體設(shè)計說明書-開發(fā)規(guī)范分冊(V2.0)_第1頁
廣東電信綜合業(yè)務(wù)支撐系統(tǒng)(IBSS)總體設(shè)計說明書-開發(fā)規(guī)范分冊(V2.0)_第2頁
廣東電信綜合業(yè)務(wù)支撐系統(tǒng)(IBSS)總體設(shè)計說明書-開發(fā)規(guī)范分冊(V2.0)_第3頁
廣東電信綜合業(yè)務(wù)支撐系統(tǒng)(IBSS)總體設(shè)計說明書-開發(fā)規(guī)范分冊(V2.0)_第4頁
廣東電信綜合業(yè)務(wù)支撐系統(tǒng)(IBSS)總體設(shè)計說明書-開發(fā)規(guī)范分冊(V2.0)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、廣廣東東省省電電信信 綜綜合合業(yè)業(yè)務(wù)務(wù)支支撐撐系系統(tǒng)統(tǒng) ( (ibss) ) 開開發(fā)規(guī)發(fā)規(guī)范范說說明明書書 編制: 部門職位: 日期:_ 審核: 部門職位: 日期:_ 批準(zhǔn): 部門職位: 日期:_ 廣州南方電信系統(tǒng)軟件有限公司廣州南方電信系統(tǒng)軟件有限公司 版權(quán)所有版權(quán)所有 不得復(fù)制不得復(fù)制 目目 錄錄 第一章第一章 引言引言 .4 4 1.1 編寫目的 .4 1.2 背景 .4 1.3 文檔地圖 .4 1.4 術(shù)語定義 .4 1.5 參考資料 .4 第二章第二章 通用編碼規(guī)范通用編碼規(guī)范 .5 5 2.1 排版 .5 2.2 注釋 .5 2.3 命名 .6 2.4 可讀性 .6 2.5 變量

2、.6 2.6 函數(shù)、過程 .6 2.7 可測性 .7 2.8 程序效率 .7 2.9 質(zhì)量保證 .7 2.10 代碼編譯 .8 第三章第三章 delphidelphi 前端開發(fā)設(shè)計規(guī)范前端開發(fā)設(shè)計規(guī)范 .9 9 3.1 軟件模塊設(shè)計 .9 3.1.1 開發(fā)工具 .9 3.1.2 文檔的建立和管理 .9 3.1.3 版本控制 .9 3.1.4 注釋和功能描述 .10 3.1.5 菜單打開窗體的引出函數(shù)聲明 .10 3.1.6 修改 .10 3.1.7 發(fā)布的公用資源,多使用類 .10 3.2 編碼設(shè)計 .11 3.2.1 命名規(guī)則 .11 第四章第四章 cicscics 開發(fā)規(guī)范開發(fā)規(guī)范 .19

3、19 4.1 命名規(guī)則 .19 4.1.1 通用規(guī)則 .19 4.1.2 program 命名 .20 4.1.3 函數(shù)/過程命名 .20 4.1.4 變量命名 .20 4.1.5 宏定義 .21 4.2 程序的書寫規(guī)范 .21 4.2.1 嵌入式 sql 的書寫規(guī)范 .21 4.2.2 空行 .21 4.2.3 代碼行 .21 4.2.4 對齊 .22 4.2.5 修飾符的位置 .22 4.2.6 注釋 .22 4.3 開發(fā)注意事項 .23 4.3.1 平臺支持 .23 4.3.2 cics program 中禁止使用的函數(shù) .23 4.3.3 cics program 中不推薦使用的函數(shù)

4、.23 4.3.4 宿主變量(host variable)可用數(shù)據(jù)類型 .23 4.3.5 數(shù)據(jù)類型兼容 .24 4.3.6 char 數(shù)據(jù)類型的使用 .24 4.3.7 varchar 數(shù)據(jù)類型的使用 .24 4.3.8 統(tǒng)一編譯選項 .24 4.3.9 統(tǒng)一日期格式 .24 4.3.10 字符集 .25 4.3.11 防止頭文件的多重包含 .25 4.4 開發(fā)建議 .25 第五章第五章 數(shù)據(jù)庫設(shè)計規(guī)范數(shù)據(jù)庫設(shè)計規(guī)范 .2626 5.1 數(shù)據(jù)庫中對象命名原則 .26 5.2 數(shù)據(jù)庫中對象前綴的定義 .26 5.3 庫表命名原則 .26 5.4 庫表類別劃分 .27 5.5 字段命名規(guī)則 .2

5、8 5.6 字段類型規(guī)范 .30 5.7 存儲過程和觸發(fā)器命名規(guī)則 .30 5.8 主鍵和索引命名規(guī)則 .30 5.9 設(shè)計規(guī)則 .30 第一章第一章 引言引言 1.11.1 編寫目的編寫目的 為了規(guī)范設(shè)計和代碼風(fēng)格,提高代碼質(zhì)量,增強程序的可讀性和可維護性,特編 寫本文檔。 預(yù)期讀者:項目提出方以及用戶方相關(guān)技術(shù)人員、項目開發(fā)組成員、質(zhì)量控制人 員。 1.21.2 背景背景 系統(tǒng)名稱:綜合業(yè)務(wù)支撐系統(tǒng) 項目提出人:廣東省電信公司 項目開發(fā)者:廣州南方電信系統(tǒng)軟件有限公司 用戶:廣東省電信公司、廣東省電信公司地市級分公司 1.31.3 文檔地圖文檔地圖 本文檔定義了開發(fā)的規(guī)范,包括以下幾個方面

6、: 通用編碼規(guī)范 delphi 前端開發(fā)設(shè)計規(guī)范 cics 中間件開發(fā)規(guī)范 數(shù)據(jù)庫設(shè)計規(guī)范 1.41.4 術(shù)語定義術(shù)語定義 無。 1.51.5 參考資料參考資料 廣東省電信綜合業(yè)務(wù)支撐系統(tǒng)業(yè)務(wù)需求分析書 v2.0 廣東省電信公司 廣東省電信綜合業(yè)務(wù)支撐系統(tǒng)技術(shù)規(guī)范廣東省電信公司 計算機軟件產(chǎn)品開發(fā)文件編制指南gb 8567-88 計算機軟件質(zhì)量保證計劃規(guī)范gb/t 12504-90 計算機軟件配置管理計劃規(guī)范gb/t 12505-90 第二章第二章 通用編碼規(guī)范通用編碼規(guī)范 2.12.1 排版排版 關(guān)鍵詞和操作符之間加適當(dāng)?shù)目崭瘛?相對獨立的程序塊與塊之間加空行。 較長的語句、表達式等要分成多

7、行書寫。 劃分出的新行要進行適應(yīng)的縮進,使排版整齊,語句可讀。 長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。 循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適應(yīng)的劃分。 若函數(shù)或過程中的參數(shù)較長,則要進行適當(dāng)?shù)膭澐帧?不允許把多個短語句寫在一行中,即一行只寫一條語句。 函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進風(fēng)格。 c/c+語言是用大括號和界定一段程序塊的,編寫程序塊時和 應(yīng)各獨占一行并且位于同一列,同時與引用它們的語句左對齊。在函數(shù)體的開始、類 的定義、結(jié)構(gòu)的定義、枚舉的定義以及 if、for、do、while、switch、case 語句中 的程

8、序都要采用如上的縮進方式。 2.22.2 注釋注釋 注釋要簡單明了。 邊寫代碼邊注釋,修改代碼同時修改相應(yīng)的注釋,以保證注釋與代碼的一致性。 在必要的地方注釋,注釋量要適中。注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止 注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。 對代碼的注釋應(yīng)放在其上方相鄰位置,不可放在下面。 對數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不可放在下面;對結(jié)構(gòu)中的每個域的 注釋應(yīng)放在此域的右方;同一結(jié)構(gòu)中不同域的注釋要對齊。 變量、常量的注釋應(yīng)放在其上方相鄰位置或右方。 全局變量要有較詳細的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它 以及存取時注意事項等的說明。 在

9、每個源文件的頭部要有必要的注釋信息,包括:文件名;版本號;作者;生成 日期;模塊功能描述(如功能、主要算法、內(nèi)部各部分之間的關(guān)系、該文件與其它文 件關(guān)系等) ;主要函數(shù)或過程清單及本文件歷史修改記錄等。 在每個函數(shù)或過程的前面要有必要的注釋信息,包括:函數(shù)或過程名稱;功能描 述;輸入、輸出及返回值說明;調(diào)用關(guān)系及被調(diào)用關(guān)系說明等。 2.32.3 命名命名 較短的單詞可通過去掉“元音”形成縮寫; 較長的單詞可按單詞的頭幾個發(fā)音符的優(yōu)先級。 使用匈牙利表示法。 2.42.4 可讀性可讀性 避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代。 不要使用難懂的技巧性很高的語句。 源程序中關(guān)系較為緊密的代碼應(yīng)

10、盡可能相鄰。 2.52.5 變量變量 去掉沒必要的公共變量。 構(gòu)造僅有一個模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問的公共 變量,防止多個不同模塊或函數(shù)都可以修改、創(chuàng)建同一公共變量的現(xiàn)象。 仔細定義并明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。 明確公共變量與操作此公共變量的函數(shù)或過程的關(guān)系,如訪問、修改及創(chuàng)建等。 當(dāng)向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦與不合理的值或越界等現(xiàn)象發(fā)生。 防止局部變量與公共變量同名。 仔細設(shè)計結(jié)構(gòu)中元素的布局與排列順序,使結(jié)構(gòu)容易理解、節(jié)省占用空間,并減 少引起誤用現(xiàn)象。 結(jié)構(gòu)的設(shè)計要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應(yīng)用

11、保 留余地(如預(yù)留一些空間等) 。 留心具體語言及編譯器處理不同數(shù)據(jù)類型的原則及有關(guān)細節(jié)。 嚴(yán)禁使用未經(jīng)初始化的變量。聲明變量的同時對變量進行初始化。 編程時,要注意數(shù)據(jù)類型的強制轉(zhuǎn)換。 2.62.6 函數(shù)、過程函數(shù)、過程 函數(shù)的規(guī)模盡量限制在 200 行以內(nèi)。 一個函數(shù)最好僅完成一件功能。 為簡單功能編寫函數(shù)。 函數(shù)的功能應(yīng)該是可以預(yù)測的,也就是只要輸入數(shù)據(jù)相同就應(yīng)產(chǎn)生同樣的輸出。 盡量不要編寫依賴于其他函數(shù)內(nèi)部實現(xiàn)的函數(shù)。 避免設(shè)計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。 用注釋詳細說明每個參數(shù)的作用、取值范圍及參數(shù)間的關(guān)系。 檢查函數(shù)所有參數(shù)輸入的有效性。 檢查函數(shù)所有非參數(shù)輸入的有效性,

12、如數(shù)據(jù)文件、公共變量等。 函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能。 避免使用無意義或含義不清的動詞為函數(shù)命名。 函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。 明確函數(shù)功能,精確(而不是近似)地實現(xiàn)函數(shù)設(shè)計。 減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。 編寫可重入函數(shù)時,若使用全局變量,則應(yīng)通過關(guān)中斷、信號量(即 p、v 操作) 等手段對其加以保護。 2.72.7 可測性可測性 在編寫代碼之前,應(yīng)預(yù)先設(shè)計好程序調(diào)試與測試的方法和手段,并設(shè)計好各種調(diào) 測開關(guān)及相應(yīng)測試代碼如打印函數(shù)等。 在進行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項目及測試用例,同 時仔細分析并優(yōu)化測試用例,以提高測試效率。 2.82

13、.8 程序效率程序效率 編程時要經(jīng)常注意代碼的效率。 在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。 不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性造成影 響。 編程時,要隨時留心代碼效率;優(yōu)化代碼時,要考慮周全。 要仔細地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。 通過對系統(tǒng)數(shù)據(jù)結(jié)構(gòu)劃分與組織的改進,以及對程序算法的優(yōu)化來提高空間效率。 在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層。 盡量減少循環(huán)嵌套層次。 避免循環(huán)體內(nèi)含判斷語句,應(yīng)將循環(huán)語句置于判斷語句的代碼塊之中。 盡量用乘法或其它方法代替除法,特別是浮點運算中的除法。 2.92.9 質(zhì)量保證

14、質(zhì)量保證 在軟件設(shè)計過程中構(gòu)筑軟件質(zhì)量。代碼質(zhì)量保證優(yōu)先原則 正確性,指程序要實現(xiàn)設(shè)計要求的功能。 穩(wěn)定性、安全性,指程序穩(wěn)定、可靠、安全。 可測試性,指程序要具有良好的可測試性。 規(guī)范/可讀性,指程序書寫風(fēng)格、命名規(guī)則等要符合規(guī)范。 全局效率,指軟件系統(tǒng)的整體效率。 局部效率,指某個模塊/子模塊/函數(shù)的本身效率。 個人表達方式/個人方便性,指個人編程習(xí)慣。 只引用屬于自己的存貯空間。 防止引用已經(jīng)釋放的內(nèi)存空間。 過程/函數(shù)中分配的內(nèi)存,在過程/函數(shù)退出之前要釋放。 過程/函數(shù)中申請的(為打開文件而使用的)文件句柄,在過程/函數(shù)退出前要關(guān) 閉。 防止內(nèi)存操作越界。 時刻注意表達式是否會上溢、

15、下溢。 認真處理程序所能遇到的各種出錯情況。 系統(tǒng)運行之初,要初始化有關(guān)變量及運行環(huán)境,防止未經(jīng)初始化的變量被引用。 系統(tǒng)運行之初,要對加載到系統(tǒng)中的數(shù)據(jù)進行一致性檢查。 嚴(yán)禁隨意更改其它模塊或系統(tǒng)的有關(guān)設(shè)置和配置。 不能隨意改變與其它模塊的接口。 充分了解系統(tǒng)的接口之后,再使用系統(tǒng)提供的功能。 要時刻注意易混淆的操作符。當(dāng)編完程序后,應(yīng)從頭至尾檢查一遍這些操作符。 不使用與硬件或操作系統(tǒng)關(guān)系很大的語句,而使用建議的標(biāo)準(zhǔn)語句。 建議:使用第三方提供的軟件開發(fā)工具包或控件時,要注意以下幾點: 充分了解應(yīng)用接口、使用環(huán)境及使用時注意事項,不能過分相信其正確性。 除非必要,不要使用不熟悉的第三方工具

16、包與控件。 2.102.10 代碼編譯代碼編譯 編寫代碼時要注意隨時保存,并定期備份,防止由于斷電、硬盤損壞等原因造成 代碼丟失。 同一項目組內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項。 合理地設(shè)計軟件系統(tǒng)目錄,方便開發(fā)人員使用。 打開編譯器的所有告警開關(guān)對程序進行編譯。 在同一項目組或產(chǎn)品組中,要統(tǒng)一編譯開關(guān)選項。 使用工具軟件(如 visual sourcesafe)對代碼版本進行維護。 第三章第三章 delphidelphi 前端開發(fā)設(shè)計規(guī)范前端開發(fā)設(shè)計規(guī)范 3.13.1 軟件模塊設(shè)計軟件模塊設(shè)計 .1 開發(fā)工具開發(fā)工具 統(tǒng)一采用 delphi 6 開發(fā),每個模塊有自

17、己的編號,在程序設(shè)計中應(yīng)嚴(yán)格按編號 設(shè)計編碼。 .2 文檔的建立和管理文檔的建立和管理 每個模塊的所有文檔的建立由設(shè)計者完成,所有設(shè)計說明,更改文檔要向 (3d:tossdoc)提交,當(dāng)模塊發(fā)生更改后文檔的更新必須即時完成, 生成的運行文件向3d:toss bin)提交。 對設(shè)計文檔的修改應(yīng)加上修改人的名字及時間,如: procedure showconfig(odb:tdatabase); /張三 1999.08.26 procedure showconfig(odb:tdatabase);stdcall; 各子系統(tǒng)的模塊組相對獨立,每

18、個子系統(tǒng)的模塊的調(diào)用由主控程序完成; 各子系統(tǒng)的模塊組都是一個包方式的 dll 文件,確實有困難的采用 exe 文件, 通過選中 project-options-packages 下 build with runtime packages 進行設(shè)置。 .3 版本控制版本控制 版本的構(gòu)成,如:v01。2001。11。23 后面幾位一般來說是提交日期,版本號 的修改由程序員自己完成,版本修改后必須進行版本發(fā)布,使程序的版本號與庫表發(fā) 布時的版本號一致。 每個 dll 的工程文件必須包括版本信息的全局變量,包含取版本信息函數(shù),以便 主控程序做版本檢測; 每個 dll 必須包含版本控制

19、函數(shù) getversioninfo,并且在 exports 中申明。 取版本信息 var versioninfo :tversion = (product:xxx 模塊; version:v1.0.1999.08.11; author:abc; updatedate:19990815); function getversioninfo:tversion;stdcall; begin result := versioninfo; end; .4 注釋和功能描述注釋和功能描述 每個模塊前要 有模塊的功能描述,輸入輸出參數(shù),時間,創(chuàng)建人員等; 注釋在函數(shù)或命令行語句的上方; 3.1.

20、53.1.5 菜單打開窗體的引出函數(shù)聲明菜單打開窗體的引出函數(shù)聲明 菜單動態(tài)調(diào)用 dll 文件打開窗體的必須要有一個引出函數(shù)或過程 在接口部分聲明引出函數(shù)或過程; dll 項目文件中在 exports 子句引出了 dll 中應(yīng)用程序要調(diào)用的函數(shù)或過程; .6 修改修改 對模塊的修改必須注意對文檔的更新,特別是對初始化程序的修改。 注明修改原因,修改人,修改時間,以便以后維護人員的代碼了解; .7 發(fā)布的公用資源,多使用類發(fā)布的公用資源,多使用類 建議建立一個公用資源庫(ndpublic.dll) ,這個資源庫包含一些常用的功能函 數(shù),功用控件等 ,開發(fā)時使用方法

21、是將 ndpublic.pas 文件加入你的工程中去。使用 靜態(tài)調(diào)用的方式使用; 建立幾個基本窗口(如,父窗口,編輯,查找等) ,大家的其他窗口可以從這幾 個窗口中繼承下來用。鼓勵大家將自己設(shè)計的其他窗口提煉出來讓大家一起使用。 請多使用類的方法解決問題,如果可能可以將相對獨立的對象建成 vcl 控件或 ocx 控 件,便于資源重復(fù)利用。 公用資源庫,公共父窗體的修改更新最好由專人管理,發(fā)布更新; 3.23.2 編碼設(shè)計編碼設(shè)計 .1 命名規(guī)則命名規(guī)則 指在軟件設(shè)計中涉及到的各種對象(應(yīng)用、窗口、菜單等)以及變量的命名的一 套方法。命名的基本規(guī)則是簡單明了,盡量使用長命名方式,

22、功能命名可以是漢語簡 拼和英文。 a、 文件命名: 項目文件:項目文件的名稱應(yīng)當(dāng)具有描述意義,如綜合管理的項目工程文件: zhgl.dpr 窗體文件: 窗體文件的名稱應(yīng)當(dāng)表達出窗體的用途,且具有 f r m 前綴 如主窗口;frmmain, 對應(yīng)的模塊編號:0500000001 數(shù)據(jù)模塊文件: 數(shù)據(jù)模塊文件的名稱應(yīng)當(dāng)表達出數(shù)據(jù)模塊的作用,且具有 d m 前 綴,如部門的數(shù)據(jù)模塊文件:dmdepartment.dfm 單元文件: 1. 普通單元的結(jié)構(gòu) (1) 單元名 單元的名稱應(yīng)當(dāng)有描述性。例如,應(yīng)用程序的主窗體單元叫 main.pas 。 (2) uses 句子 interface 部分的 u

23、ses 子句應(yīng)當(dāng)只包含該部分需要的單元。不要包含可能由 delp hi 自動添加的單元 implementation 部分的 uses 子句應(yīng)當(dāng)只包含該部分需要的單元,不要有多余的 單元。 (3) interface 部分 interface 部分應(yīng)當(dāng)只包含需要被外部單元訪問的類型、變量、過程與函數(shù)的聲 明。而且,這些聲明應(yīng)當(dāng)在 implementation 部分之前。 (4) implementation 部分 implementation 部分包括本單元私有的類型、變量、過程與函數(shù)的實現(xiàn)。 (5) initialization 部分 不要在 initialization 部分放置花費時間很

24、多的代碼。否則,將導(dǎo)致應(yīng)用程序 啟動時顯得很慢。 (6) finalization 部分 確保釋放所有在 initialization 部分中分配的資源。 2. 窗體單元 窗體單元文件的名稱與相應(yīng)的窗體名稱相同。例如,about 窗體的名稱叫 frmabout 。單元文件名稱叫 about.pas 。 3. 數(shù)據(jù)模塊單元 數(shù)據(jù)模塊單元文件的名稱與相應(yīng)的數(shù)據(jù)模塊名稱相同。例如,數(shù)據(jù)模塊單元的名 稱叫 dmdepartment.pas。 4. 通用的單元 通用單元的名稱應(yīng)當(dāng)表達出它的用途。例如,一個實用工具單元的名稱 叫 ugutilities.pas ,包含全局變量的單元名稱叫 customer

25、globals.pas 。 注意,一個項目中單元名稱必須是唯一的。通用單元名不能重名。 5. 組件單元 組件單元應(yīng)放在單獨的路徑中,以表明它們是定義組件的單元。它們一般與項目 不放在同一路徑下。單元文件名稱應(yīng)表達出其內(nèi)容。 文件頭: 所有源文件和項目文件都應(yīng)具有文件頭。一個正確的文件頭應(yīng)包含以下信息: copyright year by authors b、 變量的命名 范圍前綴舉例 參數(shù)(argument)aaname 全局(global)ggname 實例(instance)iiname 局部(local)llname 共享(shared)ssname 系統(tǒng)全局變量(一般只有如下幾個) 待

26、定 c、過程和函數(shù)(子程序) 子程序名應(yīng)該以大寫字母開頭,而且應(yīng)該易于閱讀.下面是一個正確格式的子程序 名: procedurethisisapoorlyformattedroutinename; 下面是一個首字母適當(dāng)大寫的子程序名: procedurethisismuchmorereadableroutinename; 子程序名應(yīng)該具有與其用途相關(guān)的含義.導(dǎo)致發(fā)生某動作的子程序應(yīng)該以動詞為 前綴命名,例如: procedureformatharddrive; 為輸入?yún)?shù)賦值的子程序應(yīng)該以set為前綴命名,例如: proceduresetusername; 取回數(shù)值的子程序應(yīng)該以get為前綴命

27、名,例如: functiongetusername:string; 形參(formalparameters) 格式 在可能的情況下,同類型的形參應(yīng)該在一條語句中說明: procedurefoo(param1,param2,param3:integer;param4:string); 命名 所有的形參名稱應(yīng)該具有與其用途相關(guān)的含義,而且不應(yīng)該基于傳遞到子程序 的標(biāo)識符名稱.適當(dāng)情況下,參數(shù)名應(yīng)該以字符a為前綴,例如, proceduresomeproc(ausername:string;auserage:integer); 使用前綴a是一種約定,以便參數(shù)名與類的屬性名、域名重復(fù)時消除歧義. 參數(shù)

28、順序 下面的形參順序主要是為在寄存器模式下得到更高的性能,寄存器模式是慣用的 調(diào)用模式. 調(diào)用者最常使用的參數(shù)應(yīng)該在參數(shù)的最前位置,使用越少的參數(shù),其位置應(yīng)該越在 右面. d、組件實例的命名規(guī)則: 組件的名稱應(yīng)當(dāng)具有描述性。delp h i 沒有為組件指定默認的名稱。單元命名 要使用一個變更了的匈牙利命名規(guī)范。在這個標(biāo)準(zhǔn)中,組件名包括兩個部分:前綴和 性質(zhì)標(biāo)識名 例如:tlabel 前綴為 lbl, tedit 為 edt 等,具體的見附表 2-2 e、編程公用約定 1、use 字句 implementation 部分的uses子句應(yīng)該只包括implementation部分中代碼 需要的單元.

29、無關(guān)的單元名應(yīng)該刪除; 該部分應(yīng)該包括類型本單元私有的類型聲明, 變量聲明,過程/函數(shù) 2、不要將耗費大量時間的代碼放在單元的initialization部分.這將導(dǎo)致應(yīng) 用程序啟動緩慢 3、匹配的 beginend 要對齊,新的關(guān)鍵字相對于上一行向右移兩格, begin,end 語句應(yīng)該單獨作為一行,例如: if . then begin end; with 的層次最好不超過三層。 4、確保你釋放了在initialization部分分配的全部項目 5、任何可能的地方,所有的資源分配代碼都必須以try.finally 結(jié)構(gòu)保護起來 6、try.except應(yīng)該只在你需要在產(chǎn)生意外時執(zhí)行任務(wù)的情

30、況下使用.一般來 說,你不需要使用try.except來簡單地顯示錯誤信息,因為應(yīng)用程序?qū)⑼ㄟ^ appl ication對象自動實現(xiàn)這一點.在except子句中,如果你希望在執(zhí)行過自己 的 任務(wù)后再調(diào)用缺省的意外處理程序,應(yīng)該使用raise來再次產(chǎn)生這個意外. f、注釋和功能描述 建議在所有的源文件,工程文件,單元文件等中使用包含信息的文件頭,有模 塊的功能描述,參數(shù),時間,創(chuàng)建人員等; 注釋在函數(shù)或命令行語句的上方; 六、數(shù)據(jù)模塊窗口(dm) 1、 所有數(shù)據(jù)字典下載的數(shù)據(jù)集控件都放在該數(shù)據(jù)模塊窗口中,供系統(tǒng)統(tǒng)一使用。 2、 所有子窗體用到的字典數(shù)據(jù)都通過引用該窗口得到,該數(shù)據(jù)模塊窗口統(tǒng)一由

31、專人維護。 附表: standard頁面 前綴組件 mmtmainmenu pmtpopupmenu mmitmainmenuitem pmitpopupmenuitem lbltlabel edttedit memtmemo btntbutton cbtcheckbox rbtradiobutton lbtlistbox cbtcombobox scbtscrollbar gbtgroupbox rgtradiogroup pnltpanel cltcommandlist additional頁面 前綴組件 bbtntbitbtn sbtspeedbutton metmaskedit sgt

32、stringgrid dgtdrawgrid imgtimage shptshape bvltbevel sbxtscrollbox clbtchecklistbox spltsplitter stxtstatictext chttchart win32頁面 前綴組件 tbcttabcontrol pgctpagecontrol iltimagelist retrichedit tbrttrackbar prbtprogressbar udtupdown hkthotkey anitanimate dtptdatetimepicker tvttreeview lvtlistview hdrth

33、eadercontrol stbtstatusbar tlbttoolbar clbtcoolbar system頁面 前綴組件 tmttimer pbtpaintbox mptmediaplayer olectolecontainer ddcctddeclientconv ddcitddeclientitem ddsctddeserverconv ddsitddeserveritem internet頁面 前綴組件 csktclientsocket ssktserversocket wbdtwebdispatcher pptpageproducer tptquerytableproducer

34、 dstptdatasettableproducer nmdttnmdaytime nectnmecho nftnmfinger nftptnmftp nhttptnmhttp nmsgtnmmsg nmsgtnmmsgserv nntptnmnntp npoptnmpop3 nuuptnmuuprocessor smtptnmsmtp nsttnmstrm nststnmstrmserv ntmtnmtime nudptnmudp psktpowersock ngstnmgeneralserver htmlthtml urltnmurl smltsimplemail dataaccess頁面

35、 前綴組件 dstdatasource tblttable qrytquery sptstoredproc dbtdatabase ssntsession bmtbatchmove usqltupdatesql datacontrols頁面 前綴組件 dbgtdbgrid dbntdbnavigator dbttdbtext dbetdbedit dbmtdbmemo dbitdbimage dblbtdblistbox dbcbtdbcombobox dbchtdbcheckbox dbrgtdbradiogroup dblltdblookuplistbox dblctdblookupcom

36、bobox dbretdbrichedit dbcgtdbctrlgrid dbchtdbchart decisioncube頁面 前綴組件 dcbtdecisioncube dcqtdecisionquery dcstdecisionsource dcptdecisionpivot dcgtdecisiongrid dcgrtdecisiongraph qreport頁面 前綴組件 qrtquickreport qrsdtqrsubdetail qrbtqrband qrcbtqrchildband qrgtqrgroup qrltqrlabel qrttqrtext qretqrexpr

37、qrstqrsysdata qrmtqrmemo qrrttqrrichtext qrdrtqrdbrichtext qrshtqrshape qritqrimage qrditqrdbmimage qrcrtqrcompositereport qrptqrpreview qrchtqrchart dialogs頁面 dialog組件是封裝在組件內(nèi)部的實際窗體.因此應(yīng)該遵循窗體的命名約定. 類型 實例名稱應(yīng)該與不帶數(shù)字后綴的類型實例名稱相同,如下: 類型實例名稱 topendialogopendialog tsavedialogsavedialog topenpicturedialogopen

38、picturedialog tsavepicturedialogsavepicturedialog tfontdialogfontdialog tcolordialogcolordialog tprintdialogprintdialog tprintsetupdialogprintersetupdialog tfinddialogfinddialog treplacedialogreplacedialog win31頁面 前綴組件 dblltdblookuplist dblctdblookupcombo tsttabset oltoutline tnbttabbednotebook nbtn

39、otebook hdrtheader flbtfilelistbox dlbtdirectorylistbox dcbtdrivecombobox fcbtfiltercombobox samples頁面 前綴組件 ggtgauge cgtcolorgrid spbtspinbutton spetspinedit doltdirectoryoutline caltcalendar ibeatibeventalerter activex頁面 前綴組件 cfxtchartfx vsptvsspell f1btf1book vtctvtchart grptgraph midas頁面 前綴組件 prv

40、tprovider cdstclientdataset qcdstqueryclientdataset dcomtdcomconnection oleetoleenterpriseconnection scktsocketconnection rmstremoteserver midtmidasconnection 第四章第四章 cicscics 開發(fā)規(guī)范開發(fā)規(guī)范 4.14.1 命名規(guī)則命名規(guī)則 .1 通用規(guī)則通用規(guī)則 本節(jié)論述的通用規(guī)則是被大多數(shù)程序員所采納和接受的,我們應(yīng)當(dāng)在遵循這些共 性規(guī)則的前提下,再擴充特定的規(guī)則。 禁用系統(tǒng)保留字 不用使用系統(tǒng)的保留字來命名標(biāo)識符,例

41、如不要使用 cics、exec 、begin、end 等來做標(biāo)識符。 標(biāo)識符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進行“解碼” 。 標(biāo)識符最好采用英文單詞或其組合,便于記憶和閱讀。不建議使用漢語拼音來命 名。程序中的英文單詞一般不會太復(fù)雜,用詞應(yīng)當(dāng)準(zhǔn)確。例如不要把 currentvalue 寫成 nowvalue。 標(biāo)識符的長度應(yīng)當(dāng)符合“min-length / 變量 x 與 x 容易混淆 void foo(int x);/ 函數(shù) foo 與 foo 容易混淆 void foo(float x); 盡量避免名字中出現(xiàn)數(shù)字編號,導(dǎo)致產(chǎn)生無意義的標(biāo)識符,如 value1,value2 等, 除非邏輯

42、上的確需要編號。 .2 programprogram 命名命名 本節(jié)論述的 cics 中 pd 中 program 的命名規(guī)則。 program 的名稱不能超過八個字符; 在 program 命名中,可用的字符為 a-z,a-z,0-9,$ and .,但是 cics 會自 動將小寫字母轉(zhuǎn)換成大寫字母; 不要使用 cics 中的保留字,如 cics 、exec,也不要使用 cics、dfh 、erz 、faa 等作為前綴; program 的命名應(yīng)應(yīng)清晰準(zhǔn)確的表達 program 的功能或用途。program 可以使用 一個或多個單詞描述命名,當(dāng)長度超過八個字符時,應(yīng)采用宿寫。

43、 例如: loaddict getrtype program 對應(yīng)的文件名(包括.pc 文件、可執(zhí)行文件) ,與 program 命名保持一致。 .3 函數(shù)函數(shù)/ /過程命名過程命名 函數(shù)/過程的命名應(yīng)能清晰準(zhǔn)確的描述函數(shù)/過程的功能或用途,并具可讀性。函 數(shù)/過程可以使用一個或多個單詞描述命名,采用“大小寫”混排的方式,第一個字 母小寫,其后每個單詞的第一個字母要大寫,其它字母小寫。 例如: normalexit()、checkerror()。 函數(shù)參數(shù)的命名,除了沒有 prefix 之外,其余同變量的命名方式。 .4 變量命名變量命名 變量采用匈牙利命名法,

44、同時結(jié)合 c 的原則;一般情況下,變量的取名方式為: 其中 prefix 和 basetype 都采用小寫,description 由一個或多個單詞組成,采 用“大小寫”混排的方式,每個單詞的第一個字母大寫,其它字母小寫。 例如: gcmodulename 定義一個 char 類型的全局變量 prefix 描述變量的使用方式,有關(guān)項目的全局變量必須用 g_開始,靜態(tài)變量 s_,局部變 量可以不加前綴,也可以采用 l_用以顯示說明該變量是局部變量。 前綴類型備注 g 全局變量 s 靜態(tài)變量 l 局部變量 basetype 指定變量的數(shù)據(jù)類型。以下表中列出了 c 語言各種數(shù)據(jù)類型的前綴。 前綴類型

45、例子 ccharcname bboolbenable iintilength ffloatfwidth sshortsheight llonglsalary ddoubledage p*pdoc uunsigned .5 宏定義宏定義 以一個或多個有意義的單詞組成; 單詞全部大寫; 單詞之間以“_“分隔; 例如: #define max(a,b) blah #define link_success 4.24.2 程序的書寫規(guī)范程序的書寫規(guī)范 程序的書寫規(guī)范雖然不會影響程序的功能,但會影響可讀性。程序的書寫應(yīng)追求 清晰、美觀。 .1 嵌入式嵌入式 sqlsql 的

46、書寫規(guī)范的書寫規(guī)范 exec sql 大寫; oracle 中的關(guān)鍵字大寫(如:select、delete 、from 等) ; sql 語句中的表名、字段名小寫。 .2 空行空行 空行起著分隔程序段落的作用??招械皿w(不過多也不過少)將使程序的布局更 加清晰??招胁粫速M內(nèi)存,所以在程序中要適當(dāng)?shù)糜每招小?在每個類聲明之后、每個函數(shù)定義結(jié)束之后都要加空行。 在一個函數(shù)體內(nèi),邏揖上密切相關(guān)的語句之間不加空行,其它地方應(yīng)加空行分隔。 .3 代碼行代碼行 一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的代碼容易 閱讀,并且方便于寫注釋。 if、for、

47、while、do 等語句自占一行,執(zhí)行語句不得緊跟其后。不論執(zhí)行語句 有多少都要加。這樣可以防止書寫失誤。 盡可能在定義變量的同時初始化該變量(就近原則) 如果變量的引用處和其定義處相隔比較遠,變量的初始化很容易被忘記。如果引 用了未被初始化的變量,可能會導(dǎo)致程序錯誤。例如: int width = 10; / 定義并初紿化 width int height = 10; / 定義并初紿化 height int depth = 10; / 定義并初紿化 depth .4 對齊對齊 程序的分界符和應(yīng)獨占一行并且位于同一列,同時與引用它們的語句 左對齊。 之內(nèi)的代碼塊在右邊數(shù)格處左對

48、齊。 每一個嵌套的函數(shù)塊,使用一個 tab 縮進(可以設(shè)定為 2 個空格) 。 .5 修飾符的位置修飾符的位置 應(yīng)當(dāng)將修飾符 * 和 緊靠變量名,以避免引起誤解。 例如: char *name; int *x, y;/ 此處 y 不會被誤解為指針 .6 注釋注釋 c 語言的注釋符為“/*/” 。注釋通常用于版本版權(quán)聲明、函數(shù)接口說明、重要 的代碼行或段落提示。 雖然注釋有助于理解代碼,但注意不可過多地使用注釋。 注釋是對代碼的“提示” ,而不是文檔。程序中的注釋不可喧賓奪主,注釋 太多了會讓人眼花繚亂。注釋的花樣要少。 如果代碼本來就是清楚的,則不必加注釋。否則

49、多此一舉,令人厭煩。例如 i+; / i 加 1,多余的注釋 邊寫代碼邊注釋,修改代碼同時修改相應(yīng)的注釋,以保證注釋與代碼的一致 性。不再有用的注釋要刪除。 注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯誤的注釋不但無益反而有害。 盡量避免在注釋中使用縮寫,特別是不常用縮寫。 注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方,不可放在 下方。 當(dāng)代碼比較長,特別是有多重嵌套時,應(yīng)當(dāng)在一些段落的結(jié)束處加注釋,便 于閱讀。 4.34.3 開發(fā)注意事項開發(fā)注意事項 .1 平臺支持平臺支持 應(yīng)該同時支持 unix 和 windows 平臺。盡量不要使用與具體硬件或軟件環(huán)境關(guān)系 密切的

50、函數(shù)或變量。 .2 cicscics programprogram 中禁止使用的函數(shù)中禁止使用的函數(shù) 在 cics program 中,有些函數(shù)是禁止使用的,禁用函數(shù)以及相應(yīng)的替代函數(shù)如 下: 序號禁用函數(shù)替代函數(shù) 1fork()callprogram() 2excel()exec cics xctl 3system()start 4exit() normalexit()、exceptexit() .3 cicscics programprogram 中不推薦使用的函數(shù)中不推薦使用的函數(shù) 在 cics program 中,有些函數(shù)是不推薦使用的,不推薦使用函數(shù)以

51、及相應(yīng)的替 代函數(shù)如下: 序號不推薦使用函數(shù)替代函數(shù) 1mallocexec cics getmain 2kill()exec cics set task purge .4 宿主變量(宿主變量(hosthost variablevariable)可用數(shù)據(jù)類型)可用數(shù)據(jù)類型 宿主變量 (host variable)可用的數(shù)據(jù)類型有: char:字符 charn:字符數(shù)組(字符串) int:整型 short: 短整型 long:長整型 float: 單精度浮點數(shù) double:雙精度浮點數(shù) varcharn :變長字符串(n 取值為 165533) .5 數(shù)據(jù)類型兼

52、容數(shù)據(jù)類型兼容 在使用宿主變量時,應(yīng)保證宿主變量與其對應(yīng)的列數(shù)據(jù)類型兼容。oracle 列數(shù) 據(jù)類型與 c 數(shù)據(jù)類型的兼容情況如下: 序號oracle 列數(shù)據(jù)類型兼容的 c 數(shù)據(jù)類型 1 char、varchar char、charn、varcharn、 int、short、long、float、double 2number int、short、long、float、double、char、char n、varcharn 3date charn、varcharn 4long charn、varcharn 5raw unsigned charn、varcharn 6longraw unsigne

53、d charn、varcharn 7rowid unsigned charn、varcharn .6 charchar 數(shù)據(jù)類型的使用數(shù)據(jù)類型的使用 在 c 程序中,在計算字符串長度時,將結(jié)尾符0也包含在內(nèi)。 所以, charn類型變量的定義,n 應(yīng)在數(shù)據(jù)庫表中的相應(yīng)列長度的基礎(chǔ)上加 1。 .7 varcharvarchar 數(shù)據(jù)類型的使用數(shù)據(jù)類型的使用 varchar 數(shù)據(jù)類型在經(jīng)過 proc 預(yù)編譯之后,會轉(zhuǎn)換成一個結(jié)構(gòu)。結(jié)構(gòu)定義如下: struct unsigned short len; unsigned char arrn; 當(dāng) varchar 類型的宿

54、主變量作為輸出時,oracle 會自動將返回字符串長度寫入 結(jié)構(gòu)中的 len 元素。 當(dāng) varchar 類型的宿主變量作為輸入時,在程序中應(yīng)人工設(shè)置 len 元素。 .8 統(tǒng)一編譯選項統(tǒng)一編譯選項 在項目組中,使用相同的 makefile 文件,統(tǒng)一編譯開關(guān)選項。 .9 統(tǒng)一日期格式統(tǒng)一日期格式 在日期類型數(shù)據(jù)的傳遞與顯示中,使用統(tǒng)一的日期格式,格式定義如下: yyyy-mm-dd yyyy-mm-dd hh24:mi:ss .10 字符集字符集 現(xiàn)在 oracle 數(shù)據(jù)庫使用的是 zhs16gbk 字符集,雙字節(jié)編碼,在定義字段長度, 特別

55、是可能包含中文內(nèi)容的字段時,應(yīng)采用偶數(shù)位長度。 .11 防止頭文件的多重包含防止頭文件的多重包含 在每個頭文件中進行如下定義,以防止文件的重復(fù)包含: #ifndef _filename_h_ #define _filename_h_ #endif / _filename_h_ 4.44.4 開發(fā)建議開發(fā)建議 當(dāng)心那些視覺上不易分辨的操作符發(fā)生書寫錯誤。 我們經(jīng)常會把“”誤寫成“” ,象“|” 、 “&” 、 “=”這類符號也 很容易發(fā)生“丟 1”失誤。然而編譯器卻不一定能自動指出這類錯誤。 變量(指針、數(shù)組)被創(chuàng)建之后應(yīng)當(dāng)及時把它們初始化,以防止把未被初始化的 變量當(dāng)成右值使

56、用。 當(dāng)心變量的初值、缺省值錯誤,或者精度不夠。 當(dāng)心數(shù)據(jù)類型轉(zhuǎn)換發(fā)生錯誤。盡量使用顯式的數(shù)據(jù)類型轉(zhuǎn)換,避免讓編譯器進行 隱式的數(shù)據(jù)類型轉(zhuǎn)換。 當(dāng)心變量發(fā)生上溢或下溢,數(shù)組的下標(biāo)越界。 盡量使用標(biāo)準(zhǔn)庫函數(shù),不要試圖自己編寫已經(jīng)存在的庫函數(shù)。 把編譯器的選擇項設(shè)置為最嚴(yán)格狀態(tài)。 第五章第五章 數(shù)據(jù)庫設(shè)計規(guī)范數(shù)據(jù)庫設(shè)計規(guī)范 5.15.1 數(shù)據(jù)庫中對象命名原則數(shù)據(jù)庫中對象命名原則 1、數(shù)據(jù)庫中各對象命名統(tǒng)一采用小寫。 2、數(shù)據(jù)庫中各對象命名中的功能描述統(tǒng)一采用英文或英文縮寫。 3、對象名稱總長度不超過 20 位。 5.25.2 數(shù)據(jù)庫中對象前綴的定義數(shù)據(jù)庫中對象前綴的定義 數(shù)據(jù)庫中的各類對象,在命名

57、中通過附加前綴來進行,通過功能描述對對象的功 能進行比較貼切的描述。 具體的命名格式為: 前綴_功能描述 類 別前 綴備 注 表 (table) *_ 不設(shè)統(tǒng)一前綴,根據(jù)庫表分類,給每 類庫表指定一個前綴。(具體參見表 的命名規(guī)則) 視圖 (view) v_ 觸發(fā)器 (trigger) tr_ 存儲過程 (procedure) p_ 主鍵 (primary key) pk_ 外鍵 (foreign key) fk_ 索引 (index) idx_ 序列 (sequence) seq_ 5.35.3 庫表命名原則庫表命名原則 庫表根據(jù)功能劃分為幾個大類。對于每個大類,再根據(jù)實際情況,劃分為幾個小

58、 類。對每類庫表定義一個前綴來加以標(biāo)識。 對于庫表分類的前綴標(biāo)識,由英文縮寫的前一個或幾個字母組合形成。 庫表命名具體格式:類別標(biāo)識_功能描述_后綴 (后綴僅對于日志表而言)。 庫表名稱的總長度不超過 20 個字符。 在庫表命名中,功能描述如果只涉及單個單詞,則采用整個單詞; 例如:pd_phone 電話信息表 rc_relation資源聯(lián)系表 如果功能要描述兩個單詞,如果兩個單詞都比較簡短,則采用整個單詞,單詞之 間用“_”分隔: 例如:rc_switch_board 機板表 dc_error_type錯誤類型表 如果涉及到的兩個單詞比較長,則取單詞的前四個字母(或縮寫)進行組合,單詞 之間

59、仍用“_”分隔:。 例如:dc_prod_type 產(chǎn)品類別表 d_info_type信息類型對照表 原則上,應(yīng)盡量避免使用三個或以上的單詞作為庫表的功能描述。如果遇到這樣 的情況,功能描述的組成參照兩個單詞時的組成規(guī)則: 例如:df_bene_item_type優(yōu)惠項目類型表 df_prod_pack_cont產(chǎn)品套餐內(nèi)容表 如果該表是另一張表的日志表,則在原表名后加“_log”后綴。 例如: ws_outer_log 裝機公司施工工單日志表 庫表命名中,常用的英文縮寫見附錄。 5.45.4 庫表類別劃分庫表類別劃分 大類小類現(xiàn)表名前綴 原表名前綴 字典類 (dictionary) d_a

60、代碼對照類(code) dc_ 收費設(shè)置類(fee) df_ 調(diào)度規(guī)則類(rule) dr_ 客戶類(customer)客戶資料 c_user 客戶業(yè)務(wù)受理信息 (customer new) cn_b 客戶業(yè)務(wù)受理舊信息 (customer old) co_tmp 客戶業(yè)務(wù)受理信息備 份 cn_*_logf 客戶業(yè)務(wù)受理舊信息 備份 co_*_logftmp 產(chǎn)品類(product)產(chǎn)品資料 pd_user 產(chǎn)品業(yè)務(wù)受理信息 (product new) pdn_b 產(chǎn)品業(yè)務(wù)受理舊信息 (product old) pdo_tmp 產(chǎn)品業(yè)務(wù)受理信息備 份 pdn_*_logf 產(chǎn)品業(yè)務(wù)受理舊信息

溫馨提示

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

評論

0/150

提交評論