




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 DOCPROPERTY Company * MERGEFORMAT 傲騰通信科技(上海)部門名稱 DOCPROPERTY Department * MERGEFORMAT 軟件部保密級別文檔編號SPM-PDS-ER-001項目名稱 SUBJECT * MERGEFORMAT 軟件部項目管理項目主管 DOCPROPERTY Manager * MERGEFORMAT Reed作者名字 AUTHOR * MERGEFORMAT Daniel創(chuàng)建時間 CREATEDATE * MERGEFORMAT 2001-11-19 13:50初審人員軟件部初審時間2001-12-12最后保存時間 SAVED
2、ATE * MERGEFORMAT 2001-12-12 18:45當前文檔版本 SUBJECT * MERGEFORMAT 軟件部項目管理 DOCPROPERTY Category * MERGEFORMAT 項目開發(fā)規(guī)范: KEYWORDS * MERGEFORMAT 代碼編寫要求歷史記錄日期版本作者行為說明2001-11-19Daniel創(chuàng)建2001-12-12審核由軟件部全體人員共同審核通過目 錄 TOC o 1-7 h z HYPERLINK l _Toc532816965 歷史記錄 PAGEREF _Toc532816965 h 2 HYPERLINK l _Toc53281696
3、6 目 錄 PAGEREF _Toc532816966 h 3 HYPERLINK l _Toc532816967 項目開發(fā)規(guī)范:代碼編寫要求 PAGEREF _Toc532816967 h 6 HYPERLINK l _Toc532816968 1 引言 PAGEREF _Toc532816968 h 6 HYPERLINK l _Toc532816969 編寫目的 PAGEREF _Toc532816969 h 6 HYPERLINK l _Toc532816970 背景 PAGEREF _Toc532816970 h 6 HYPERLINK l _Toc532816971 定義 PAGE
4、REF _Toc532816971 h 6 HYPERLINK l _Toc532816972 參考資料 PAGEREF _Toc532816972 h 6 HYPERLINK l _Toc532816973 2 安裝盤的創(chuàng)建 PAGEREF _Toc532816973 h 6 HYPERLINK l _Toc532816974 3 注冊表的使用 PAGEREF _Toc532816974 h 7 HYPERLINK l _Toc532816975 4 簡單加密算法 PAGEREF _Toc532816975 h 7 HYPERLINK l _Toc532816976 5 Delphi代碼編寫
5、標準 PAGEREF _Toc532816976 h 7 HYPERLINK l _Toc532816977 通用源代碼格式規(guī)則 PAGEREF _Toc532816977 h 7 HYPERLINK l _Toc532816978 縮格 PAGEREF _Toc532816978 h 7 HYPERLINK l _Toc532816979 頁邊空格 PAGEREF _Toc532816979 h 7 HYPERLINK l _Toc532816980 5.1.3 BeginEnd 配對 PAGEREF _Toc532816980 h 7 HYPERLINK l _Toc532816981 注
6、釋規(guī)范 PAGEREF _Toc532816981 h 8 HYPERLINK l _Toc532816982 文件注釋 PAGEREF _Toc532816982 h 8 HYPERLINK l _Toc532816983 函數(shù)注釋 PAGEREF _Toc532816983 h 8 HYPERLINK l _Toc532816984 過程注釋 PAGEREF _Toc532816984 h 8 HYPERLINK l _Toc532816985 一般注釋 PAGEREF _Toc532816985 h 9 HYPERLINK l _Toc532816986 5.2 Object Pasca
7、l語言 PAGEREF _Toc532816986 h 9 HYPERLINK l _Toc532816987 括號 PAGEREF _Toc532816987 h 9 HYPERLINK l _Toc532816988 保留字和關(guān)鍵字 PAGEREF _Toc532816988 h 9 HYPERLINK l _Toc532816989 過程和函數(shù)(例程) PAGEREF _Toc532816989 h 9 HYPERLINK l _Toc532816990 命名/格式化 PAGEREF _Toc532816990 h 9 HYPERLINK l _Toc532816991 形式參數(shù) PAG
8、EREF _Toc532816991 h 9 HYPERLINK l _Toc532816992 格式化 PAGEREF _Toc532816992 h 9 HYPERLINK l _Toc532816993 命名 PAGEREF _Toc532816993 h 10 HYPERLINK l _Toc532816994 參數(shù)的排序 PAGEREF _Toc532816994 h 10 HYPERLINK l _Toc532816995 常量參數(shù) PAGEREF _Toc532816995 h 10 HYPERLINK l _Toc532816996 名稱的沖突 PAGEREF _Toc5328
9、16996 h 10 HYPERLINK l _Toc532816997 變量 PAGEREF _Toc532816997 h 10 HYPERLINK l _Toc532816998 變量的命名和格式 PAGEREF _Toc532816998 h 10 HYPERLINK l _Toc532816999 局部變量 PAGEREF _Toc532816999 h 10 HYPERLINK l _Toc532817000 全局變量的使用 PAGEREF _Toc532817000 h 11 HYPERLINK l _Toc532817001 類型 PAGEREF _Toc532817001 h
10、 11 HYPERLINK l _Toc532817002 大寫約定 PAGEREF _Toc532817002 h 11 HYPERLINK l _Toc532817003 浮點指針類型 PAGEREF _Toc532817003 h 11 HYPERLINK l _Toc532817004 枚舉類型 PAGEREF _Toc532817004 h 11 HYPERLINK l _Toc532817005 變數(shù)和ole變數(shù)類型 PAGEREF _Toc532817005 h 11 HYPERLINK l _Toc532817006 結(jié)構(gòu)類型 PAGEREF _Toc532817006 h 1
11、2 HYPERLINK l _Toc532817007 數(shù)組類型 PAGEREF _Toc532817007 h 12 HYPERLINK l _Toc532817008 記錄類型 PAGEREF _Toc532817008 h 12 HYPERLINK l _Toc532817009 語句 PAGEREF _Toc532817009 h 12 HYPERLINK l _Toc532817010 if 語句 PAGEREF _Toc532817010 h 12 HYPERLINK l _Toc532817011 case 語句 PAGEREF _Toc532817011 h 12 HYPERL
12、INK l _Toc532817012 一般性話題 PAGEREF _Toc532817012 h 12 HYPERLINK l _Toc532817013 格式 PAGEREF _Toc532817013 h 13 HYPERLINK l _Toc532817014 while 語句 PAGEREF _Toc532817014 h 13 HYPERLINK l _Toc532817015 for語句 PAGEREF _Toc532817015 h 13 HYPERLINK l _Toc532817016 repeat語句 PAGEREF _Toc532817016 h 13 HYPERLIN
13、K l _Toc532817017 with語句 PAGEREF _Toc532817017 h 13 HYPERLINK l _Toc532817018 一般話題 PAGEREF _Toc532817018 h 13 HYPERLINK l _Toc532817019 格式 PAGEREF _Toc532817019 h 13 HYPERLINK l _Toc532817020 結(jié)構(gòu)異常處理 PAGEREF _Toc532817020 h 13 HYPERLINK l _Toc532817021 一般話題 PAGEREF _Toc532817021 h 13 HYPERLINK l _Toc
14、532817022 .2 tryfinally的使用 PAGEREF _Toc532817022 h 13 HYPERLINK l _Toc532817023 tryexcept的使用 PAGEREF _Toc532817023 h 14 HYPERLINK l _Toc532817024 tryexceptelse的使用 PAGEREF _Toc532817024 h 14 HYPERLINK l _Toc532817025 類類型 PAGEREF _Toc532817025 h 14 HYPERLINK l _Toc532817026 命名和格式 PAGEREF _Toc532817026
15、 h 14 HYPERLINK l _Toc532817027 域 PAGEREF _Toc532817027 h 14 HYPERLINK l _Toc532817028 命名/格式 PAGEREF _Toc532817028 h 14 HYPERLINK l _Toc532817029 可視化 PAGEREF _Toc532817029 h 15 HYPERLINK l _Toc532817030 方法 PAGEREF _Toc532817030 h 15 HYPERLINK l _Toc532817031 命名/格式 PAGEREF _Toc532817031 h 15 HYPERLIN
16、K l _Toc532817032 使用靜態(tài)的方法 PAGEREF _Toc532817032 h 15 HYPERLINK l _Toc532817033 使用虛擬/動態(tài)的方法 PAGEREF _Toc532817033 h 15 HYPERLINK l _Toc532817034 使用抽象的方法 PAGEREF _Toc532817034 h 15 HYPERLINK l _Toc532817035 屬性存取方法 PAGEREF _Toc532817035 h 15 HYPERLINK l _Toc532817036 屬性 PAGEREF _Toc532817036 h 15 HYPERL
17、INK l _Toc532817037 命名/格式 PAGEREF _Toc532817037 h 15 HYPERLINK l _Toc532817038 使用存取的方法 PAGEREF _Toc532817038 h 15 HYPERLINK l _Toc532817039 文件 PAGEREF _Toc532817039 h 16 HYPERLINK l _Toc532817040 工程文件 PAGEREF _Toc532817040 h 16 HYPERLINK l _Toc532817041 窗體文件 PAGEREF _Toc532817041 h 16 HYPERLINK l _T
18、oc532817042 數(shù)據(jù)模板文件 PAGEREF _Toc532817042 h 16 HYPERLINK l _Toc532817043 遠端數(shù)據(jù)模板文件 PAGEREF _Toc532817043 h 16 HYPERLINK l _Toc532817044 5.3.5 Unit文件 PAGEREF _Toc532817044 h 16 HYPERLINK l _Toc532817045 通用Unit結(jié)構(gòu) PAGEREF _Toc532817045 h 16 HYPERLINK l _Toc532817046 .1 unit的名字 PAGEREF _Toc532817046 h 16
19、HYPERLINK l _Toc532817047 .2 uses子句 PAGEREF _Toc532817047 h 16 HYPERLINK l _Toc532817048 .3 interface部分 PAGEREF _Toc532817048 h 16 HYPERLINK l _Toc532817049 .4 implementation部分 PAGEREF _Toc532817049 h 16 HYPERLINK l _Toc532817050 .5 initialization部分 PAGEREF _Toc532817050 h 16 HYPERLINK l _Toc5328170
20、51 .6 finalization部分 PAGEREF _Toc532817051 h 17 HYPERLINK l _Toc532817052 窗體單元 PAGEREF _Toc532817052 h 17 HYPERLINK l _Toc532817053 數(shù)據(jù)模板單元 PAGEREF _Toc532817053 h 17 HYPERLINK l _Toc532817054 一般目的單元 PAGEREF _Toc532817054 h 17 HYPERLINK l _Toc532817055 構(gòu)件單元 PAGEREF _Toc532817055 h 17 HYPERLINK l _Toc
21、532817056 窗體和數(shù)據(jù)模板 PAGEREF _Toc532817056 h 17 HYPERLINK l _Toc532817057 窗體 PAGEREF _Toc532817057 h 17 HYPERLINK l _Toc532817058 窗體類型命名標準 PAGEREF _Toc532817058 h 17 HYPERLINK l _Toc532817059 窗體實例命名標準 PAGEREF _Toc532817059 h 17 HYPERLINK l _Toc532817060 自動創(chuàng)建窗體 PAGEREF _Toc532817060 h 18 HYPERLINK l _To
22、c532817061 模式窗體實例化函數(shù) PAGEREF _Toc532817061 h 18 HYPERLINK l _Toc532817062 5.4.2 數(shù)據(jù)模板 PAGEREF _Toc532817062 h 19 HYPERLINK l _Toc532817063 數(shù)據(jù)模板命名標準 PAGEREF _Toc532817063 h 19 HYPERLINK l _Toc532817064 數(shù)據(jù)模板實例命名標準 PAGEREF _Toc532817064 h 19 HYPERLINK l _Toc532817065 包 PAGEREF _Toc532817065 h 19 HYPERLI
23、NK l _Toc532817066 使用運行包和設(shè)計包的比較 PAGEREF _Toc532817066 h 19 HYPERLINK l _Toc532817067 文件命名標準 PAGEREF _Toc532817067 h 19 HYPERLINK l _Toc532817068 構(gòu)件 PAGEREF _Toc532817068 h 20 HYPERLINK l _Toc532817069 用戶自定義構(gòu)件 PAGEREF _Toc532817069 h 20 HYPERLINK l _Toc532817070 構(gòu)件單元 PAGEREF _Toc532817070 h 20 HYPERL
24、INK l _Toc532817071 使用注冊單元 PAGEREF _Toc532817071 h 20 HYPERLINK l _Toc532817072 構(gòu)件實例命名約定 PAGEREF _Toc532817072 h 20 HYPERLINK l _Toc532817073 構(gòu)件的前綴 PAGEREF _Toc532817073 h 20 HYPERLINK l _Toc532817074 6 C+代碼編寫標準 PAGEREF _Toc532817074 h 22 HYPERLINK l _Toc532817075 7 Java代碼編寫標準 PAGEREF _Toc532817075
25、h 22 DOCPROPERTY Category * MERGEFORMAT 項目開發(fā)規(guī)范: KEYWORDS * MERGEFORMAT 代碼編寫要求引言編寫目的軟件開發(fā)的產(chǎn)品質(zhì)量水平,是一個由來已久的話題。而提高軟件企業(yè)的產(chǎn)品質(zhì)量水平,必須改進軟件產(chǎn)品的開發(fā)過程。為此,制定了本規(guī)范用于指導(dǎo)軟件部的項目開發(fā)過程,從而提高達到提高產(chǎn)品質(zhì)量的目的。本規(guī)范以Rational Unified Process(簡稱RUP) 軟件工程過程為藍本,結(jié)合部門的實際情況而選擇修改,從而使之適應(yīng)當前應(yīng)用級系統(tǒng)設(shè)計開發(fā)的需要。本文檔主要對程序開發(fā)人員的代碼編寫要求做了詳細的規(guī)定,以使得整個開發(fā)小組所編寫的代碼保
26、持一致的風(fēng)格。本文檔提供給軟件部全體成員參考。背景軟件部在基本完成了成都智能交通信息中心系統(tǒng)之后發(fā)現(xiàn),我們需要一套軟件開發(fā)規(guī)范來指導(dǎo)項目組的開發(fā)過程,使得項目開發(fā)過程具有可重復(fù)性,為此啟動了該項目軟件部項目管理。項目的名稱:軟件部項目管理(Software department Project Management,簡稱SPM)任務(wù)提出者:傲騰通信科技(上海)軟件部任務(wù)開發(fā)者:傲騰通信科技(上海)軟件部產(chǎn)品使用地:上海產(chǎn)品使用者:傲騰通信科技(上海)軟件部定義術(shù)語縮略表示英文全稱解釋說明軟件部項目管理SPMOctant Software department Project Managemen
27、t傲騰通信科技(上海)軟件部為了規(guī)范項目開發(fā)流程而啟動的一個項目項目開發(fā)規(guī)范PDSProject Development Specifications傲騰通信科技(上海)軟件部定義的一種文檔類別參考資料文檔編號文檔名稱作者版本來源(存放地)Delphi 4 Code ChineseBorland Inc. HYPERLINK :/ xapware /ddg C+編程指南Rational Inc.2000 HYPERLINK :/ rational wwJava編程指南Rational Inc.2000 HYPERLINK :/ rational 安裝盤的創(chuàng)建軟件部開發(fā)完成的所有系統(tǒng)都使用Ins
28、tallshield Express 3.03來制作安裝程序。為了保證快捷方式創(chuàng)建的一致性,現(xiàn)做如下規(guī)定,要求快捷方式都創(chuàng)建在:StartProgramsOctant Communications注冊表的使用為了統(tǒng)一注冊表的使用方式,現(xiàn)做如下規(guī)定,要求注冊表信息都存放在:HKEY_LOCAL_MACHINESOFTWAREOctant Communications簡單加密算法對于保密性要求不是很高的場合下,我們可以采用簡單加密算法逐位異或算法,具體算法如下:第一個字符同自己異或作為密文的第一個字節(jié),第二個字符同密文的第一個字節(jié)異或作為密文的第二個字節(jié),第三個字符統(tǒng)密文的第二個字節(jié)異或作為密文的
29、第三個字節(jié),依次類推;解密算法和加密算法完全一致。例子:原始字串:CDITS(43 44 49 54 53)加密過程:43 XOR 43=4344 XOR 43=0749 XOR 07=4E54 XOR 4E=1A53 XOR 1A=49密文:43 07 4E 1A 49Delphi代碼編寫標準通用源代碼格式規(guī)則縮格縮格是指在每一級有兩個空格。不要在源代碼中保留tab字符,這是因為tab字符會隨著不同用戶的不同設(shè)置和不同的資源管理工具(打印、文檔、版本控制等)而代表不同的寬度。你可以通過關(guān)閉Environment選項對話框中Editor頁上的“Use tab character”和“Optim
30、al fill”檢查框(通過Tools|Environment)來禁止保存tab字符。頁邊空格頁邊空格會被設(shè)置成80字符寬。通常,源碼不會超出這個邊界,但這個方針會有一些彈性。不管是否有可能,那些超出到另一行的語句會在一個逗號或其他操作符之后與前面的語句相連。當一個語句被打斷相連時,它應(yīng)比原來的那一行語句縮進兩個字符。BeginEnd 配對Begin 子句應(yīng)寫在獨立的一行。例如,下面第一行是錯誤的寫法而第二行是正確的。for I := 0 to 10 do begin/錯誤,begin同for在同一行for I := 0 to 10 do/正確,begin出現(xiàn)在獨立的一行begin這個規(guī)則的例
31、外是當begin子句的出現(xiàn)是作為一個else子句的一部分參考例子:if some statement thenbeginendelse beginsomeOtherStatement;end;end 語句永遠出現(xiàn)在獨立的一行。當begin語句不是一個else子句的一部分時,相應(yīng)的end語句永遠縮進到與begin部分相對應(yīng)的位置。注釋規(guī)范文件注釋*版權(quán)所有 (C) 2000,2001 傲騰通訊*項目:模塊:描述:版本:日期: 更新:*函數(shù)注釋*功能說明:輸入?yún)?shù):輸出參數(shù):返回值:日期: 更新:*過程注釋*功能說明:日期: 更新:*一般注釋/ 對主要算法部分進行描述Object Pascal語言
32、括號永遠不要在括號與括號之間的字符中間留下空格。下面的例子示范了錯誤的與正確地使用括號中的空格:CallProc( Aparameter );/錯誤CallProc(Aparameter); /正確永遠不要在一個語句中使用不必要的括號。括號只應(yīng)在源代碼中需要的地方使用。以下的例子示范了錯誤和正確的使用:if (I = 42) then/錯誤 多余的括號if (I = 42) or (J = 42) then/正確 需要括號保留字和關(guān)鍵字Object Pascal 保留字和關(guān)鍵字永遠是全部小寫。過程和函數(shù)(例程)命名/格式化例程的名字永遠應(yīng)該以大寫的字母開頭并且中間錯落分明以便于可讀性。下面是一
33、個不正確格式的過程名稱: procedure thisisapoorlyformattedroutinename;下面是一個合適的大小寫例程名稱的例子: procedure ThisIsMuchMoreReadableRoutineName;例程的名稱應(yīng)該同它的內(nèi)容相符。一個會導(dǎo)致某個行為的例程應(yīng)以動詞開頭。例如: procedure FormatHardDrive;一個用于設(shè)置輸入?yún)?shù)的例程應(yīng)以單詞set作為前綴,例如: procedure SetUserName;一個用來接收某個值的例程應(yīng)以單詞get作為前綴,例如: procedure GetUserName : string;形式參數(shù)格
34、式化如果有的話,相同類型的形參應(yīng)合并在一個語句中: procedure Foo(Param1, Param2, Param3 : Integer; Param4 : string);命名所有形參的名字應(yīng)是十分符合它們所代表的意義,特別是應(yīng)該以傳送到例程中的標志符的名稱為基礎(chǔ)。一個好的參數(shù)名稱應(yīng)以字符A為前綴 例如: procedure SomeProc(AuserName : string; AuserAge : integer);“A”前綴按約定表示該參數(shù)的名稱是與類類型中的一個屬性或域的名稱相對應(yīng)的。參數(shù)的排序下面的形參的順序重點說明了注冊者調(diào)用約定調(diào)用的好處。 最常用的參數(shù)應(yīng)放在第一位,
35、其它的參數(shù)應(yīng)按從左到右的順序排列。 輸入?yún)?shù)列表應(yīng)放在輸出參數(shù)列表的左邊。 將通用的參數(shù)放在特殊參數(shù)的左邊,例如: procedure SomeProc(Aplanet, AContinent, Acountry, Astate, Acity) 排序有可能有些例外,比如事件的處理。類型為TObject的Sender參數(shù)經(jīng)常放在第一位。常量參數(shù)當一個參數(shù)為記錄型、數(shù)組類型、ShortString、或接口類型并且在例程中不被改變時,這些參數(shù)應(yīng)做上常量標記。這樣做會讓編譯器更加有效率的產(chǎn)生有關(guān)這些不改變的參數(shù)的代碼。而例程中另外一些非變參數(shù)也可常量來傳送。盡管這樣做沒有產(chǎn)生任何效果和提高效率,這將會
36、給調(diào)用例程的使用者提供更多的信息。名稱的沖突當使用擁有兩個名稱相同的例程的兩個單元時,如果你調(diào)用該例程時,在uses子句中排在后面的單元中的例程將會被調(diào)用。為了解決這種“在uses子句上的模糊”沖突,要在調(diào)用該例程時寫上相關(guān)的單元的前綴,例如: sysUtile.FindClose(SR);或 windows.FindClose(Handle);變量變量的命名和格式變量的命名應(yīng)以使用它們的目的相符。循環(huán)控制變量應(yīng)采用一個單獨的字符作為名字,比如 I,J,或K,也可以采用更加有意義的名字,比如 UserIndex。邏輯變量的名字應(yīng)能充分表達準確的真或假的意思。局部變量一個過程中的局部變量應(yīng)遵循所
37、有其它變量的使用和命名約定。臨時變量的取名應(yīng)合理。如果必須的話,在一進入例程就應(yīng)初始化局部變量。局部的AnsiString變量會自動初始化為一個空的字符串。局部接口和派分接口類型變量將會自動初始化為nil,并且局部變數(shù)和ole變數(shù)類型變量會自動初始化為Unassigned全局變量的使用使用全局變量是不推薦的。但是,在某些時候還是必須使用,而且它們也只應(yīng)在必須使用的時候才使用。在這種時候,你應(yīng)努力只在一段上下文范圍內(nèi)使用全局變量。例如,一個全局變量只應(yīng)在一個單元的implemntation部分內(nèi)是全局的。如果打算在多個單元類使用全局數(shù)據(jù),你應(yīng)將它們移到一個公共的單元中然后被其它所有單元使用。全局
38、變量可以在var子句中直接初始化為一個值。記住,所有的全局數(shù)據(jù)會自動初始化為0,因此不要將全局變量初始化為一個“空”值比如 0、nil、Unassigned、等等。這樣做的一個理由是因為零初始化的全局數(shù)據(jù)在exe文件中不會占據(jù)任何空間。零初始化數(shù)據(jù)被存儲在一個虛擬的數(shù)據(jù)段,它在應(yīng)用程序啟動后被分配在一段內(nèi)存中。非零初始化的全局數(shù)據(jù)在硬盤的exe文件占用空間。類型大寫約定如果類型的名字是保留字,那么它應(yīng)全部小寫。Win32 API類型通常全部大寫,并且你必須遵循在Windows.pas或其他API單元中的詳細類型名稱的約定。對于其他變量名字,地一個字母應(yīng)為大寫,而其他字母應(yīng)錯落有致。下面是一些例
39、子: var MyString : string; /保留字 WindowHandle : HWND; /Win32 API 類型 I : Integer; /在System單元中引進的類型標識符浮點指針類型不推薦使用Real類型,因為它的存在只是為了向前兼容早期的Pascal代碼。在通常情況下用Double來實現(xiàn)浮點指針的需要。并且,Double對處理器和總線而言是做了最優(yōu)化處理的,它也是IEEE中定義的標準數(shù)據(jù)格式。只有當需要的范圍超出Double所定義的范圍時才使用Extended。Extended是intel定義的類型且在Java中不支持。只有當浮點指針變量的實際字節(jié)大小有其意義時才使
40、用Single。(比如當使用另一種語言的DLLs時)。枚舉類型枚舉類型的名字需符合使用該類型的目的。該類型的名字需以字符T為前綴,以表明這是一個類型。枚舉類型中的標識符列表必須包含兩個或三個字符的前綴來對應(yīng)于該枚舉類型的名字 例如: TsongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);一個枚舉類型的實例的名字應(yīng)與不要前綴的枚舉類型(SongType)相同,除非有更好的原因來賦予該變量更特殊的名字,比如:FavoriteSongType1,FavoriteSongType2 等等。變數(shù)和o
41、le變數(shù)類型通常不建議使用變數(shù)和Ole變數(shù)類型。但在只有運行時刻才能知道數(shù)據(jù)類型的程序中必須使用該類型,這種情形多出現(xiàn)在COM和數(shù)據(jù)庫開發(fā)中。Ole變數(shù)使用在以COM為基礎(chǔ)的編程中例如自動化和ActiveX控制,而變數(shù)使用在非COM的編程中,這是因為變數(shù)可以十分有效地存儲本地Delphi字符串(同一個字符串變量一樣),但Ole變數(shù)會將所有的字符串轉(zhuǎn)換為Ole字符串(WideChar 字符串)并且并不實例運算 它們永遠拷貝。結(jié)構(gòu)類型數(shù)組類型數(shù)組類型的名字需符合它們使用的目的。該類型的名字必須加以前綴T。如果須聲明該數(shù)組類型的指針,那么該指針需加以前綴P而且應(yīng)立即聲明在該數(shù)組聲明的前面。例如: t
42、ype PCycleArray = TCycleArray; TCycleArray = array1100 of integer;在實際應(yīng)用中,數(shù)組的變量實例的名稱應(yīng)是其類型的名字去掉前綴T。記錄類型記錄類型的名字應(yīng)符合使用它們的目的。其類型的聲明應(yīng)加以前綴T。如果要聲明該記錄類型的指針,就應(yīng)加以前綴P并且應(yīng)緊靠在類型聲明的前面聲明。例如: type PEmployee = TEmployee; TEmployee = record EmployeeName : string; EmployeeRate : Double; end;語句if 語句在if/then/else語句中最常發(fā)生的行為
43、應(yīng)放在then子句中,而其它發(fā)生可能性較小的行為應(yīng)放在else子句中。盡量避免使用嵌套的if語句,在這種情形下應(yīng)用多個if語句來判斷各種可能。不要使用if嵌套超過五級深度。應(yīng)使代碼編寫得更加清晰、明了。不要在if語句中使用不必要的圓括號。如果在if語句中有多個條件需測試,這些條件應(yīng)按計算強度由少到多的順序從左到右排列。這樣做能使編譯器在編譯代碼時獲得布爾估算邏輯的捷徑,從而使你的代碼獲得最佳的優(yōu)化。舉例來說,如果條件1快過條件2,而條件2快過條件3,那么在if語句中的排列應(yīng)是: if 條件1 and 條件2 and 條件3 thencase 語句一般性話題在一個case語句中的各個獨立的單元應(yīng)
44、以數(shù)字或字母順序排列。每一個case單元的動作行為應(yīng)保持簡單而不應(yīng)該超過四到五行代碼。如果所要執(zhí)行的動作過于復(fù)雜應(yīng)采用獨立的過程或函數(shù)。Case語句中的else子句只有當需要缺省行為或處理錯誤時才使用。格式case語句應(yīng)遵循其它結(jié)構(gòu)的縮格和命名約定。while 語句在一個while語句中不建議使用exit過程來跳出循環(huán),盡量僅使用循環(huán)條件來跳出循環(huán)。在一個while循環(huán)中所用的初始化代碼應(yīng)緊靠在進入while循環(huán)前面出現(xiàn)而不要被其它不相關(guān)的語句隔開。任何結(jié)束后的處理應(yīng)在循環(huán)之后立即進行。for語句for語句只有當循環(huán)次數(shù)已知的情況下才能取代while語句使用。repeat語句repeat語句的
45、使用同while語句一樣,并且遵循同樣的通用方針。with語句一般話題with語句應(yīng)節(jié)省使用,并且?guī)в写罅康木妗1苊膺^度使用with語句并且在with語句中小心使用多個對象、記錄等等。例如: with Record1, Record2 do這些事情會使程序員感到困惑并難以發(fā)現(xiàn)問題所在。格式with 語句遵循本文檔所說明的命名約定和縮格的格式規(guī)則。結(jié)構(gòu)異常處理一般話題異常的處理大量地使用在錯誤糾正和資源保護方面。這就是說一旦資源被分配,一個tryfinally必需加以使用來保證該資源被正確的釋放。這種異常的保護也是指在一個單元的initializition/finalization或一個對象的
46、constructor/destructor中進行資源的分配和釋放。tryfinally的使用任何情形下,每一次的分配都應(yīng)跟隨一個tryfinally。舉例來說,下面的代碼會造成可能的錯誤: SomeClass1 := TsomeClass.Create; SomeClass2 ;= TsomeClass.Create; try do some code finally SomeClass1.Free; SomeClass2.Free; end;一個更安全更合適的分配過程應(yīng)是: SomeClass1 := TSomeClass.Create; try SomeClass2 := TsomeCl
47、ass.Create; try do some code finally SomeClass2.Free; end; finally SomeClass1.Free; end;tryexcept的使用只有當在異常被觸發(fā)而你想執(zhí)行一些任務(wù)時才使用tryexcept。通常,你沒有必要為了只是簡單地在屏幕上顯示一個錯誤信息而使用tryexcept語句,因為這會被Application對象自動執(zhí)行。如果你想在except子句中執(zhí)行完一些任務(wù)之后調(diào)用缺省的異常處理,使用raise來重新觸發(fā)異常到下一個句柄。tryexceptelse的使用tryexcept中的else子句不建議使用,因為它會打斷所有的異
48、常包括那些你沒有準備的異常。類類型命名和格式類類型的名稱應(yīng)符合使用它們的目的。類型名字應(yīng)加以前綴T以表明這是一個類型的定義 例如:type Tcustomer = class(TObject)類型的實例通常是沒有前綴T的類型的名字 例如:var Customer :Tcustomer;注意:查閱“構(gòu)件類型的命名標準”來獲得更多有關(guān)構(gòu)件命名的信息。域命名/格式類的域名遵循與變量標識符同樣的約定除了它們應(yīng)以F為前綴,來表明這是一個域的名稱。可視化所有的域都必需是私有的。想在類的范圍之外存取域得通過屬性來使用。方法命名/格式方法的命名應(yīng)遵循本文檔中有關(guān)過程和函數(shù)的約定敘述。使用靜態(tài)的方法如果使用一個
49、靜態(tài)的方法,那么該方法就不能被該類的后代類所繼承。使用虛擬/動態(tài)的方法如果你打算該類的方法能被后代的類所繼承就得使用虛擬的方法。只有在該方法有多個繼承時(直接的或間接的)才使用動態(tài)的方法。例如,一個類類型包含一個可繼承的方法,而100個后代類要繼承這種方法,那么這個方法就會動態(tài)地產(chǎn)生為100個后代類使用的內(nèi)存。使用抽象的方法如果在一個類中使用抽象的方法,該類就不能被創(chuàng)建。只有在那些永遠不會被創(chuàng)建的類中使用抽象的方法。屬性存取方法所有存取類的方法都只能出現(xiàn)在類的private或protected部分。屬性存取方法的命名應(yīng)遵循過程和函數(shù)的約定規(guī)則。讀取存取方法(方法讀取器)必需以單詞Get為前綴。
50、寫入存取方法(方法寫入器)必需以單詞Set為前綴。方法寫入器的參數(shù)的名字應(yīng)為Value,并且它的類型應(yīng)是它所操作的屬性的類型。例如: TSomeClass = class(TObject) private FsomeField : Integer; protected function GetSomeField : Integer; procedure SetSomeField(Value : Integer); public property SomeField : Integer read GetSomeField write SetSomeField; end;屬性命名/格式屬性如果是表
51、示為一個私有域的存取器的話,那么它的名字應(yīng)是它們所操作的域的名字除去解釋符F。屬性的名字應(yīng)是名詞,不是動詞。屬性表示的是數(shù)據(jù),而方法表示的是行為。數(shù)組類型的名稱應(yīng)為復(fù)數(shù)。一般情況下屬性的名稱應(yīng)為單數(shù)。使用存取的方法盡管沒有要求,但還是建議盡量少地為一個表示私有域的屬性而使用寫入存取方法。文件工程文件工程文件應(yīng)取個描述性的名字。例如,Delphi 4開發(fā)者指南錯誤管理器 的工程名字是:DDGBugs.dpr。一個有關(guān)系統(tǒng)信息的程序的名字就應(yīng)象 SysInfo.dpr。窗體文件一個窗體文件的取名應(yīng)可以描述使用該窗體的目的,并加以后綴Frm。例如,一個“關(guān)于”的窗體的文件名應(yīng)是AboutFrm.dp
52、r。主窗體的文件名應(yīng)是MainFrm.dpr。數(shù)據(jù)模板文件數(shù)據(jù)模板的取名應(yīng)能表示使用該數(shù)據(jù)模板的目的,它的名稱應(yīng)加以兩個字符的后綴DM。例如,自定義數(shù)據(jù)模板的文件名字應(yīng)為CustomersDM.dfm。遠端數(shù)據(jù)模板文件遠端數(shù)據(jù)模板的取名應(yīng)能表示使用該遠端數(shù)據(jù)模板的目的,它的名稱應(yīng)加以三個字符的后綴RDM。例如,自定義遠端數(shù)據(jù)模板的文件名字應(yīng)為CustomersRDM.dfm。Unit文件通用Unit結(jié)構(gòu)unit的名字Unit文件應(yīng)取一個可描述性的名字。例如,包含應(yīng)用程序主窗體的單元應(yīng)叫做MainFrm.pas。uses子句在interface部分的uses子句應(yīng)包含在interface部分中的
53、代碼所需要的單元。去掉那些Delphi可以自動加入到程序中的單元。在implementation部分的uses子句應(yīng)只包含在implementation部分中的代碼所需要的單元的名字。去掉不必要的單元。interface部分interface部分應(yīng)包含只那些其它單元所需要存取類型的定義、變量、過程/函數(shù)的預(yù)定義等等。否則,就應(yīng)放在implementation部分定義。implementation部分implementation部分應(yīng)包含那些只在本單元中私用的類型定義、變量、過程/函數(shù)定義等等。initialization部分不要在initialization 部分放入耗時長的代碼,這將使程序的
54、第一個界面出現(xiàn)得比較緩慢。finalization部分在這里要保證釋放你在Initialization部分所分配的任何資源。窗體單元一個窗體的單元文件應(yīng)擁有與它所對應(yīng)的窗體文件同樣的名稱。例如,“關(guān)于”窗體的單元名稱應(yīng)為 AboutFrm.pas,而主窗體的單元名稱應(yīng)為MainFrm.pas。數(shù)據(jù)模板單元一個數(shù)據(jù)模板的單元文件應(yīng)擁有與它所對應(yīng)的數(shù)據(jù)模板文件同樣的名稱。例如,一個自定義數(shù)據(jù)模板單元的名稱應(yīng)為CustomersDM.pas。一般目的單元一般目的單元的取名應(yīng)符合使用該單元的目的。例如,一個實用程序單元取名為BugUtilities.pas。一個包含全局變量的單元取名為Customer
55、Globals.pas。注意,該單元的名字不能與它的工程中所使用的所有包中的單元的名字相同。不贊成使用一般的或通用的單元名字。構(gòu)件單元構(gòu)件單元應(yīng)放在獨立的目錄,以將它們同定義構(gòu)件組或構(gòu)件集合的單元區(qū)分開來。它們要永遠同工程在不同的目錄。單元名字應(yīng)同它們的內(nèi)容相符。注意:查閱“用戶定義的構(gòu)件”部分來獲得更多有關(guān)構(gòu)件命名標準的信息。窗體和數(shù)據(jù)模板窗體窗體類型命名標準窗體類型的取名應(yīng)能表達使用該窗體的目的。類型定義應(yīng)加以前綴T。前綴后面跟隨著描述性的名字。最后,應(yīng)加以Form后綴來描述名字。例如,一個“關(guān)于”的窗體的類型的名字應(yīng)為: TAboutFrom = class(TForm);主窗體的定義為
56、: TMainForm = class(TForm);一個用戶接入窗體的名字應(yīng)象: TCustomerEntryForm = class(TForm);窗體實例命名標準窗體實例應(yīng)是沒有帶前綴T的相應(yīng)類的名字。例如,對應(yīng)于前面窗體類型而言,其實例的名字應(yīng)為: 類型名稱實例名稱 TAboutForm AboutForm TMainFormMainForm TCustomerEntryFormCustomerEntryForm自動創(chuàng)建窗體只有主窗體可以是自動創(chuàng)建的除非有其它更好的理由不這樣做。所有其它的窗體必需從工程選項對話框中的自動創(chuàng)建列表中移走。查閱以下部分來獲得更多的信息。模式窗體實例化函數(shù)所
57、有的窗體單元都應(yīng)包含一個窗體實例化函數(shù),該函數(shù)用來創(chuàng)建、設(shè)置、模式地顯示窗體,并釋放窗體。該函數(shù)應(yīng)返回窗體的模式結(jié)果。該函數(shù)要傳遞的參數(shù)應(yīng)遵循本文檔指定的“參數(shù)傳遞”標準。通過這種方式封裝的函數(shù)性有助于代碼的再利用和維護。該窗體的變量要從單元中移走,并再窗體實例的函數(shù)中進行本地式地定義。注意,這就意味著該窗體必需從工程/選項對話框中的自動創(chuàng)建列表中剔除。參考本文檔后面的“自動創(chuàng)建窗體”。例如,下面的單元展示了再GetUserData窗體中的一個函數(shù)。 unit UserDataFrm; interface useswindows, Messages, SysUtils, Classes, Gr
58、aphics, Controls, Forms,Dialogs, StdCtrls; type TUserDataForm = class(TForm) edtUserName : TEdit; edtUserID : TEdit; private Private declarations public Public declarations end; function GetUserData(var aUserName : String; var aUserID : Integer) : Word; implementation $R *.DFM function GetUserData(v
59、ar aUserName : String; var aUserID : Integer) : word; var UserDataForm : TuserDataForm; begin UserDataForm := TuserDataForm.Create(Application); try UserDataForm.Caption := Getting User Data; Result := UserDataForm.ShowModal; if (Result = mrOK) then begin aUserName := UserDataForm.edtUserName.Text;
60、aUserID := StrToInt(UserDataForm.edtUserID.Text); end; finally UserDataForm.Free; end; end; end.數(shù)據(jù)模板數(shù)據(jù)模板命名標準數(shù)據(jù)模板的取名要符合使用該數(shù)據(jù)模板的目的。類型的定義應(yīng)加以前綴T,后面緊接著描述性的名字,最后要加以后綴單詞“DataModule”。例如,一個自定義的數(shù)據(jù)模板有時候應(yīng)該象: TCustomerDataModule = class(TDataModule)一個命令式的數(shù)據(jù)模板的名字應(yīng)象: TOrdersDataModule = class(TDataModule)數(shù)據(jù)模板實例命名標
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空航天器振動與噪聲控制技術(shù)考核試卷
- 機動車交通事故公證處理考核試卷
- 聯(lián)合品牌推廣考核試卷
- 稀土金屬壓延加工中的質(zhì)量改進方法比較與分析考核試卷
- 自行車的時尚與服裝設(shè)計考核試卷
- 航海倫理與職業(yè)道德規(guī)范實踐考核試卷
- 四川司法警官職業(yè)學(xué)院《籃球俱樂部》2023-2024學(xué)年第二學(xué)期期末試卷
- 網(wǎng)絡(luò)安全技術(shù)實踐教程(微課版)-教案 信息收集與漏洞掃描
- 上海市閔行區(qū)七寶中學(xué)2025年高三考前適應(yīng)性訓(xùn)練化學(xué)試題試卷含解析
- 太湖創(chuàng)意職業(yè)技術(shù)學(xué)院《口腔醫(yī)學(xué)探究性學(xué)習(xí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 近視防控技術(shù)的進展
- 【工程法規(guī)】王欣 教材精講班課件 41-第7章-7.1-工程建設(shè)標準
- 二類醫(yī)療器械零售經(jīng)營備案質(zhì)量管理制度
- 工作場所安全與環(huán)境保護管理制度
- 電氣自動化試題及答案
- 內(nèi)控評價收集資料清單
- 虹橋商務(wù)區(qū)核心區(qū)一期及南北片區(qū)集中供能專項規(guī)劃
- 六年級數(shù)學(xué)上冊第二單元《位置與方向》測試題-人教版(含答案)
- 2024年云南省職業(yè)技能大賽(健康照護賽項)理論參考試題庫(含答案)
- 1.5彈性碰撞和非彈性碰撞 課件高二上學(xué)期物理人教版(2019)選擇性必修第一冊
- 專題11二次函數(shù)中矩形存在性綜合應(yīng)用(專項訓(xùn)練)(原卷版+解析)
評論
0/150
提交評論