欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Delphi 程序員代碼編寫(xiě)標準指南
Delphi 程序員代碼編寫(xiě)標準指南 


版權所有 1998 Xavier Perched和 Steve Teiseira 

  

一、序言 

二、通用源代碼格式規則 

2.1 縮格 

2.2 頁(yè)邊空格 

2.3 Begin…End 配對 

三、Object Pascal 
3.1 括號 

3.2 保留字和關(guān)鍵字 

3.3 過(guò)程和函數(例程) 

    3.3.1 命名/格式化 

    3.3.2 形式參數 

        3.3.2.1 格式化 

        3.3.2.2 命名 

        3.3.2.3 參數的排序 

        3.3.2.4 常量參數 

        3.3.2.5 名稱(chēng)的沖突 

3.4 變量 

    3.4.1 變量的命名和格式 

    3.4.2 局部變量 

    3.4.3 全局變量的使用 

3.5 類(lèi)型 

    3.5.1 大寫(xiě)約定 

        3.5.1.1 浮點(diǎn)指針類(lèi)型 

        3.5.1.2 枚舉類(lèi)型 

        3.5.1.3 變數和ole變數類(lèi)型 

    3.5.2 結構類(lèi)型 

        3.5.2.1 數組類(lèi)型 

        3.5.2.2 記錄類(lèi)型 

3.6 語(yǔ)句 

    3.6.1 if 語(yǔ)句 

    3.6.2 case 語(yǔ)句 

        3.6.2.1 一般性話(huà)題 

        3.6.2.2 格式 

    3.6.3 while 語(yǔ)句 

    3.6.4 for 語(yǔ)句 

    3.6.5 repeat 語(yǔ)句 

    3.6.6 with  語(yǔ)句 

        3.6.6.1 一般話(huà)題 

        3.6.6.2 格式 

3.7 結構異常處理 

    3.7.1 一般話(huà)題 

    3.7.2 try…finally的使用 

    3.7.3 try…except的使用 

    3.7.4 try…except…else的使用 

3.8 類(lèi)類(lèi)型 

    3.8.1 命名和格式 

    3.8.2 域 

        3.8.2.1 命名/格式 

        3.8.2.2 可視化 

    3.8.3 方法 

        3.8.3.1 命名/格式 

        3.8.3.2 使用靜態(tài)的方法 

        3.8.3.3 使用虛擬/動(dòng)態(tài)的方法 

        3.8.3.4 使用抽象的方法 

        3.8.3.5 屬性存取方法 

    3.8.4 屬性 

        3.8.4.1 命名/格式 

        3.8.4.2 使用存取的方法 

四、文件 

4.1 工程文件 

    4.1.1 命名 

4.2 窗體文件 

    4.2.1 命名 

4.3 數據模板文件 

    4.3.1 命名 

4.4 遠端數據模板文件 

    4.4.1 命名 

4.5 Unit文件 

    4.5.1 通用Unit結構 

        4.5.1.1 unit的名字 

        4.5.1.2 uses子句 

        4.5.1.3 interface部分 

        4.5.1.4 implementation部分 

        4.5.1.5 initialization部分 

        4.5.1.6 finalization部分 

    4.5.2 窗體單元 

        4.5.2.1 命名 

    4.5.3 數據模板單元 

        4.5.3.1 命名 

    4.5.4 一般目的單元 

        4.5.4.1 命名 

    4.5.5 構件單元 

        4.5.5.1 命名 

4.6 文件頭 

五、窗體和數據模板 

5.1 窗體 

    5.1.1 窗體類(lèi)型命名標準 

    5.1.2 窗體實(shí)例命名標準 

    5.1.3 自動(dòng)創(chuàng )建窗體 

    5.1.4 模式窗體實(shí)例化函數 

5.2 數據模板 

    5.2.1 數據模板命名標準 

    5.2.2 數據模板實(shí)例命名標準 

六、包 

6.1 使用運行包和設計包的比較 

6.2 文件命名標準 

七、構件 

7.1 用戶(hù)自定義構件 

7.2 構件單元 

7.3 使用注冊單元 

7.4 構件實(shí)例命名約定 

7.5 構件的前綴 

7.6 Standard頁(yè) 

7.7 Additional頁(yè) 

7.8 Win32頁(yè) 

7.9 System頁(yè) 

7.10 Internet頁(yè) 

7.11 Data Access頁(yè) 

7.12 Data Controls頁(yè) 

7.13 Decision Cube頁(yè) 

7.14 QReport頁(yè) 

7.15 Dialogs頁(yè) 

7.16 Win3.1頁(yè) 

7.17 Samples頁(yè) 

7.18 ActiveX頁(yè) 

7.19 Midas頁(yè) 

  

一、序言 

  

本文檔詳述了在Delphi 4開(kāi)發(fā)者指南下進(jìn)行編程的代碼編寫(xiě)標準。在通常情況下,本文檔遵循“取消”式格式的指引方針,該方針由Borland國際通過(guò)一些例外來(lái)使用。在Delphi 4開(kāi)發(fā)者指南中包含本文檔的目的在于闡述一種方法,通過(guò)該方法,開(kāi)發(fā)小組可以在他們所編寫(xiě)的代碼中保持一貫的風(fēng)格。這樣做的目的是使在開(kāi)發(fā)小組中的每一個(gè)程序員都可以明白其他程序員的代碼。這有助于提高代碼編寫(xiě)的可讀性和使用的一貫性。 

  

本文檔并不意味著(zhù)包含了所有存在于代碼中的標準。但是,它的內容已足夠幫你起個(gè)好頭。你可以自由的增加修改這些標準來(lái)滿(mǎn)足你的需要。我們不贊成你偏離這些由Borland開(kāi)發(fā)人員所使用的標準太遠。我們推薦這么做是因為一旦有新的程序員加入到你的開(kāi)發(fā)小組中,而他們最喜歡和最熟悉的是Borland的標準。象大多數代碼標準文檔,本文檔也會(huì )根據需要進(jìn)行改動(dòng)。因此,你可以到www.xapware.com/ddg中找到最新的更新版本。本文檔不包括用戶(hù)接口標準。本文檔是獨立的但也是同樣重要的。已經(jīng)有足夠的第三方書(shū)籍和Microsoft文檔包括了另外一些指導方針,而我們決定并不復制這些信息,但我們會(huì )指引你到Microsoft Developers Network 和一些資源,在那兒可以找到你所需的信息。 

返回  

二、通用源代碼格式規則 

  

2.1 縮格 

  

縮格是指在每一級有兩個(gè)空格。不要在源代碼中保留tab字符,這是因為tab字符會(huì )隨著(zhù)不同用戶(hù)的不同設置和不同的資源管理工具(打印、文檔、版本控制等)而代表不同的寬度。 

  

你可以通過(guò)關(guān)閉Environment選項對話(huà)框中Editor頁(yè)上的“Use tab character”和“Optimal fill”檢查框(通過(guò)Tools|Environment)來(lái)禁止保存tab字符。 

  

2.2 頁(yè)邊空格 

  

頁(yè)邊空格會(huì )被設置成80字符寬。通常,源碼不會(huì )超出這個(gè)邊界,但這個(gè)方針會(huì )有一些彈性。不管是否有可能,那些超出到另一行的語(yǔ)句會(huì )在一個(gè)逗號或其他操作符之后與前面的語(yǔ)句相連。當一個(gè)語(yǔ)句被打斷相連時(shí),它應比原來(lái)的那一行語(yǔ)句縮進(jìn)兩個(gè)字符。 

  

2.3 Begin…End 配對 

  

Begin 子句應寫(xiě)在獨立的一行。例如,下面第一行是錯誤的寫(xiě)法而第二行是正確的。 

for I := 0 to 10 do begin  //錯誤,begin同for在同一行 

for I := 0 to 10 do        //正確,begin出現在獨立的一行 

begin 

  

這個(gè)規則的例外是當begin子句的出現是作為一個(gè)else子句的一部分-參考例子: 

if some statement then 

begin 

  … 

end 

else begin 

  someOtherStatement; 

end; 

  

end 語(yǔ)句永遠出現在獨立的一行。 

當begin語(yǔ)句不是一個(gè)else子句的一部分時(shí),相應的end語(yǔ)句永遠縮進(jìn)到與begin部分相對應的位置。 

 返回  

三、Object Pascal 

  

3.1 括號 

  

永遠不要在括號與括號之間的字符中間留下空格。下面的例子示范了錯誤的與正確地使用括號中的空格: 

         CallProc( Aparameter );    //錯誤 

         CallProc(Aparameter);      //正確 

  

永遠不要在一個(gè)語(yǔ)句中使用不必要的括號。括號只應在源代碼中需要的地方使用。以下的例子示范了錯誤和正確的使用: 

if (I = 42) then                    //錯誤 - 多余的括號 

if (I = 42) or (J = 42) then        //正確 - 需要括號 

  

3.2 保留字和關(guān)鍵字 

  

Object Pascal 保留字和關(guān)鍵字永遠是全部小寫(xiě)。 

  

3.3 過(guò)程和函數(例程) 

  

3.3.1 命名/格式化 

  

例程的名字永遠應該以大寫(xiě)的字母開(kāi)頭并且中間錯落分明以便于可讀性。下面是一個(gè)不正確格式的過(guò)程名稱(chēng): 

         procedure thisisapoorlyformattedroutinename; 

  

下面是一個(gè)合適的大小寫(xiě)例程名稱(chēng)的例子: 

         procedure ThisIsMuchMoreReadableRoutineName; 

  

例程的名稱(chēng)應該同它的內容相符。一個(gè)會(huì )導致某個(gè)行為的例程應以動(dòng)詞開(kāi)頭。例如: 

         procedure FormatHardDrive; 

  

一個(gè)用于設置輸入參數的例程應以單詞set作為前綴,例如: 

         procedure SetUserName; 

  

一個(gè)用來(lái)接收某個(gè)值的例程應以單詞get作為前綴,例如: 

         procedure GetUserName : string; 

  

3.3.2 形式參數 

  

3.3.2.1 格式化 

  

如果有的話(huà),相同類(lèi)型的形參應合并在一個(gè)語(yǔ)句中: 

  procedure Foo(Param1, Param2, Param3 : Integer; Param4 : string); 

  

3.3.2.2 命名 

  

所有形參的名字應是十分符合它們所代表的意義,特別是應該以傳送到例程中的標志符的名稱(chēng)為基礎。一個(gè)好的參數名稱(chēng)應以字符A為前綴 - 例如: 

  procedure SomeProc(AuserName : string; AuserAge : integer); 

  

“A”前綴按約定表示該參數的名稱(chēng)是與類(lèi)類(lèi)型中的一個(gè)屬性或域的名稱(chēng)相對應的。 

  

3.3.2.3 參數的排序 

  

下面的形參的順序重點(diǎn)說(shuō)明了注冊者調用約定調用的好處。 

  

- 最常用的參數應放在第一位,其它的參數應按從左到右的順序排列。 

- 輸入參數列表應放在輸出參數列表的左邊。 

- 將通用的參數放在特殊參數的左邊,例如: 

      procedure SomeProc(Aplanet, AContinent, Acountry, Astate, Acity) 

- 排序有可能有些例外,比如事件的處理。類(lèi)型為T(mén)Object的Sender參數經(jīng)常放在第一位。 

  

3.3.2.4 常量參數 

  

當一個(gè)參數為記錄型、數組類(lèi)型、ShortString、或接口類(lèi)型并且在例程中不被改變時(shí),這些參數應做上常量標記。這樣做會(huì )讓編譯器更加有效率的產(chǎn)生有關(guān)這些不改變的參數的代碼。 

  

而例程中另外一些非變參數也可常量來(lái)傳送。盡管這樣做沒(méi)有產(chǎn)生任何效果和提高效率,這將會(huì )給調用例程的使用者提供更多的信息。 

  

3.3.2.5 名稱(chēng)的沖突 

  

當使用擁有兩個(gè)名稱(chēng)相同的例程的兩個(gè)單元時(shí),如果你調用該例程時(shí),在uses子句中排在后面的單元中的例程將會(huì )被調用。為了解決這種“在uses子句上的模糊”沖突,要在調用該例程時(shí)寫(xiě)上相關(guān)的單元的前綴,例如: 

        sysUtile.FindClose(SR); 

或 

        windows.FindClose(Handle); 

  

3.4 變量 

  

3.4.1 變量的命名和格式 

  

變量的命名應以使用它們的目的相符 

  

循環(huán)控制變量應采用一個(gè)單獨的字符作為名字,比如 I,J,或K,也可以采用更加有意義的名字,比如 UserIndex。 

  

邏輯變量的名字應能充分表達準確的真或假的意思。 

  

3.4.2 局部變量 

  

一個(gè)過(guò)程中的局部變量應遵循所有其它變量的使用和命名約定。臨時(shí)變量的取名應合理。 

  

如果必須的話(huà),在一進(jìn)入例程就應初始化局部變量。局部的AnsiString變量會(huì )自動(dòng)初始化為一個(gè)空的字符串。 

局部接口和派分接口類(lèi)型變量將會(huì )自動(dòng)初始化為nil,并且局部變數和ole變數類(lèi)型變量會(huì )自動(dòng)初始化為Unassigned 

  

3.4.3 全局變量的使用 

  

使用全局變量是不推薦的。但是,在某些時(shí)候還是必須使用,而且它們也只應在必須使用的時(shí)候才使用。在這種時(shí)候,你應努力只在一段上下文范圍內使用全局變量。例如,一個(gè)全局變量只應在一個(gè)單元的implemntation部分內是全局的。如果打算在多個(gè)單元類(lèi)使用全局數據,你應將它們移到一個(gè)公共的單元中然后被其它所有單元使用。 

  

全局變量可以在var子句中直接初始化為一個(gè)值。記住,所有的全局數據會(huì )自動(dòng)初始化為0,因此不要將全局變量初始化為一個(gè)“空”值比如 0、nil、’’、Unassigned、等等。這樣做的一個(gè)理由是因為零-初始化的全局數據在exe文件中不會(huì )占據任何空間。零-初始化數據被存儲在一個(gè)虛擬的數據段,它在應用程序啟動(dòng)后被分配在一段內存中。非零-初始化的全局數據在硬盤(pán)的exe文件占用空間。 

  

3.5 類(lèi)型 

  

3.5.1 大寫(xiě)約定 

  

如果類(lèi)型的名字是保留字,那么它應全部小寫(xiě)。Win32 API類(lèi)型通常全部大寫(xiě),并且你必須遵循在Windows.pas或其他API單元中的詳細類(lèi)型名稱(chēng)的約定。對于其他變量名字,地一個(gè)字母應為大寫(xiě),而其他字母應錯落有致。下面是一些例子: 

      var 

        MyString : string;          //保留字 

        WindowHandle : HWND;        //Win32 API 類(lèi)型 

        I : Integer;                //在System單元中引進(jìn)的類(lèi)型標識符 

  

3.5.1.1 浮點(diǎn)指針類(lèi)型 

  

不推薦使用Real類(lèi)型,因為它的存在只是為了向前兼容早期的Pascal代碼。在通常情況下用Double來(lái)實(shí)現浮點(diǎn)指針的需要。并且,Double對處理器和總線(xiàn)而言是做了最優(yōu)化處理的,它也是IEEE中定義的標準數據格式。只有當需要的范圍超出Double所定義的范圍時(shí)才使用Extended。Extended是intel定義的類(lèi)型且在Java中不支持。只有當浮點(diǎn)指針變量的實(shí)際字節大小有其意義時(shí)才使用Single。(比如當使用另一種語(yǔ)言的DLLs時(shí))。 

  

3.5.1.2 枚舉類(lèi)型 

  

枚舉類(lèi)型的名字需符合使用該類(lèi)型的目的。該類(lèi)型的名字需以字符T為前綴,以表明這是一個(gè)類(lèi)型。枚舉類(lèi)型中的標識符列表必須包含兩個(gè)或三個(gè)字符的前綴來(lái)對應于該枚舉類(lèi)型的名字 - 例如: 

        TsongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB); 

一個(gè)枚舉類(lèi)型的實(shí)例的名字應與不要前綴的枚舉類(lèi)型(SongType)相同,除非有更好的原因來(lái)賦予該變量更特殊的名字,比如:FavoriteSongType1,FavoriteSongType2 等等。 

  

3.5.1.3 變數和ole變數類(lèi)型 

  

通常不建議使用變數和Ole變數類(lèi)型。但在只有運行時(shí)刻才能知道數據類(lèi)型的程序中必須使用該類(lèi)型,這種情形多出現在COM和數據庫開(kāi)發(fā)中。Ole變數使用在以COM為基礎的編程中例如自動(dòng)化和ActiveX控制,而變數使用在非COM的編程中,這是因為變數可以十分有效地存儲本地Delphi字符串(同一個(gè)字符串變量一樣),但Ole變數會(huì )將所有的字符串轉換為Ole字符串(WideChar 字符串)并且并不實(shí)例運算 - 它們永遠拷貝。 

  

3.5.2 結構類(lèi)型 

  

3.5.2.1 數組類(lèi)型 

  

數組類(lèi)型的名字需符合它們使用的目的。該類(lèi)型的名字必須加以前綴T。如果須聲明該數組類(lèi)型的指針,那么該指針需加以前綴P而且應立即聲明在該數組聲明的前面。例如: 

        type 

          PCycleArray = ^TCycleArray; 

          TCycleArray = array[1…100] of integer; 

在實(shí)際應用中,數組的變量實(shí)例的名稱(chēng)應是其類(lèi)型的名字去掉前綴T。 

  

3.5.2.2 記錄類(lèi)型 

  

記錄類(lèi)型的名字應符合使用它們的目的。其類(lèi)型的聲明應加以前綴T。如果要聲明該記錄類(lèi)型的指針,就應加以前綴P并且應緊靠在類(lèi)型聲明的前面聲明。例如: 

        type 

          PEmployee = ^TEmployee; 

          TEmployee = record 

            EmployeeName : string; 

            EmployeeRate : Double; 

          end; 

  

3.6 語(yǔ)句 

  

3.6.1 if 語(yǔ)句 

  

在if/then/else語(yǔ)句中最常發(fā)生的行為應放在then子句中,而其它發(fā)生可能性較小的行為應放在else子句中。 

  

盡量避免使用嵌套的if語(yǔ)句,在這種情形下應用多個(gè)if語(yǔ)句來(lái)判斷各種可能。 

  

不要使用if嵌套超過(guò)五級深度。應使代碼編寫(xiě)得更加清晰、明了。 

  

不要在if語(yǔ)句中使用不必要的圓括號。 

  

如果在if語(yǔ)句中有多個(gè)條件需測試,這些條件應按計算強度由少到多的順序從左到右排列。這樣做能使編譯器在編譯代碼時(shí)獲得布爾估算邏輯的捷徑,從而使你的代碼獲得最佳的優(yōu)化。舉例來(lái)說(shuō),如果條件1快過(guò)條件2,而條件2快過(guò)條件3,那么在if語(yǔ)句中的排列應是: 

         if 條件1 and 條件2 and 條件3 then 

  

3.6.2 case 語(yǔ)句 

  

3.6.2.1 一般性話(huà)題 

  

在一個(gè)case語(yǔ)句中的各個(gè)獨立的單元應以數字或字母順序排列。 

  

每一個(gè)case單元的動(dòng)作行為應保持簡(jiǎn)單而不應該超過(guò)四到五行代碼。如果所要執行的動(dòng)作過(guò)于復雜應采用獨立的過(guò)程或函數。 

  

Case語(yǔ)句中的else子句只有當需要缺省行為或處理錯誤時(shí)才使用。 

  

3.6.2.2 格式 

  

case語(yǔ)句應遵循其它結構的縮格和命名約定。 

  

3.6.3 while 語(yǔ)句 

  

在一個(gè)while語(yǔ)句中不建議使用exit過(guò)程來(lái)跳出循環(huán),盡量?jì)H使用循環(huán)條件來(lái)跳出循環(huán)。 

  

在一個(gè)while循環(huán)中所用的初始化代碼應緊靠在進(jìn)入while循環(huán)前面出現而不要被其它不相關(guān)的語(yǔ)句隔開(kāi)。 

  

任何結束后的處理應在循環(huán)之后立即進(jìn)行。 

  

3.6.4 for 語(yǔ)句 

  

for語(yǔ)句只有當循環(huán)次數已知的情況下才能取代while語(yǔ)句使用。 

  

3.6.5 repeat 語(yǔ)句 

  

repeat語(yǔ)句的使用同while語(yǔ)句一樣,并且遵循同樣的通用方針。 

  

3.6.6 with  語(yǔ)句 

  

3.6.6.1 一般話(huà)題 

  

with語(yǔ)句應節省使用,并且帶有大量的警告。避免過(guò)度使用with語(yǔ)句并且在with語(yǔ)句中小心使用多個(gè)對象、記錄等等。例如: 

         with Record1, Record2 do 

這些事情會(huì )使程序員感到困惑并難以發(fā)現問(wèn)題所在。 

  

3.6.6.2 格式 

  

with 語(yǔ)句遵循本文檔所說(shuō)明的命名約定和縮格的格式規則。 

  

3.7 結構異常處理 

  

3.7.1 一般話(huà)題 

  

異常的處理大量地使用在錯誤糾正和資源保護方面。這就是說(shuō)一旦資源被分配,一個(gè)try…finally必需加以使用來(lái)保證該資源被正確的釋放。這種異常的保護也是指在一個(gè)單元的initializition/finalization或一個(gè)對象的constructor/destructor中進(jìn)行資源的分配和釋放。 

  

3.7.2 try…finally的使用 

  

任何情形下,每一次的分配都應跟隨一個(gè)try…finally。舉例來(lái)說(shuō),下面的代碼會(huì )造成可能的錯誤: 

     SomeClass1 := TsomeClass.Create; 

     SomeClass2 ;= TsomeClass.Create; 

     try 

       { do some code } 

     finally 

       SomeClass1.Free; 

       SomeClass2.Free; 

     end; 

  

一個(gè)更安全更合適的分配過(guò)程應是: 

     SomeClass1 := TSomeClass.Create; 

     try 

       SomeClass2 := TsomeClass.Create; 

       try 

         { do some code } 

       finally 

         SomeClass2.Free; 

       end; 

     finally 

       SomeClass1.Free; 

     end; 

  

3.7.3 try…except的使用 

  

只有當在異常被觸發(fā)而你想執行一些任務(wù)時(shí)才使用try…except。通常,你沒(méi)有必要為了只是簡(jiǎn)單地在屏幕上顯示一個(gè)錯誤信息而使用try…except語(yǔ)句,因為這會(huì )被Application對象自動(dòng)執行。如果你想在except子句中執行完一些任務(wù)之后調用缺省的異常處理,使用raise來(lái)重新觸發(fā)異常到下一個(gè)句柄。 

  

3.7.4 try…except…else的使用 

  

try…except中的else子句不建議使用,因為它會(huì )打斷所有的異常包括那些你沒(méi)有準備的異常。 

  

3.8 類(lèi)類(lèi)型 

  

3.8.1 命名和格式 

  

類(lèi)類(lèi)型的名稱(chēng)應符合使用它們的目的。類(lèi)型名字應加以前綴T以表明這是一個(gè)類(lèi)型的定義 - 例如: 

type 

  Tcustomer = class(TObject) 

類(lèi)型的實(shí)例通常是沒(méi)有前綴T的類(lèi)型的名字 - 例如: 

var 

  Customer :Tcustomer; 

注意:查閱“構件類(lèi)型的命名標準”來(lái)獲得更多有關(guān)構件命名的信息。 

  

3.8.2 域 

  

3.8.2.1 命名/格式 

  

類(lèi)的域名遵循與變量標識符同樣的約定除了它們應以F為前綴,來(lái)表明這是一個(gè)域的名稱(chēng)。 

  

3.8.2.2 可視化 

  

所有的域都必需是私有的。想在類(lèi)的范圍之外存取域得通過(guò)屬性來(lái)使用。 

  

3.8.3 方法 

  

3.8.3.1 命名/格式 

  

方法的命名應遵循本文檔中有關(guān)過(guò)程和函數的約定敘述。 

  

3.8.3.2 使用靜態(tài)的方法 

  

如果使用一個(gè)靜態(tài)的方法,那么該方法就不能被該類(lèi)的后代類(lèi)所繼承。 

  

3.8.3.3 使用虛擬/動(dòng)態(tài)的方法 

  

如果你打算該類(lèi)的方法能被后代的類(lèi)所繼承就得使用虛擬的方法。只有在該方法有多個(gè)繼承時(shí)(直接的或間接的)才使用動(dòng)態(tài)的方法。例如,一個(gè)類(lèi)類(lèi)型包含一個(gè)可繼承的方法,而100個(gè)后代類(lèi)要繼承這種方法,那么這個(gè)方法就會(huì )動(dòng)態(tài)地產(chǎn)生為100個(gè)后代類(lèi)使用的內存。 

  

3.8.3.4 使用抽象的方法 

  

如果在一個(gè)類(lèi)中使用抽象的方法,該類(lèi)就不能被創(chuàng )建。只有在那些永遠不會(huì )被創(chuàng )建的類(lèi)中使用抽象的方法。 

  

3.8.3.5 屬性存取方法 

  

所有存取類(lèi)的方法都只能出現在類(lèi)的private或protected部分。屬性存取方法的命名應遵循過(guò)程和函數的約定規則。讀取存取方法(方法讀取器)必需以單詞Get為前綴。寫(xiě)入存取方法(方法寫(xiě)入器)必需以單詞Set為前綴。方法寫(xiě)入器的參數的名字應為Value,并且它的類(lèi)型應是它所操作的屬性的類(lèi)型。例如: 

 TSomeClass = class(TObject) 

 private 

   FsomeField : Integer; 

 protected 

   function GetSomeField : Integer; 

   procedure SetSomeField(Value : Integer); 

 public 

   property SomeField : Integer read GetSomeField write SetSomeField; 

 end; 

  

3.8.4 屬性 

  

3.8.4.1 命名/格式 

  

屬性如果是表示為一個(gè)私有域的存取器的話(huà),那么它的名字應是它們所操作的域的名字除去解釋符F。 

  

屬性的名字應是名詞,不是動(dòng)詞。屬性表示的是數據,而方法表示的是行為。 

  

數組類(lèi)型的名稱(chēng)應為復數。一般情況下屬性的名稱(chēng)應為單數。 

  

3.8.4.2 使用存取的方法 

  

盡管沒(méi)有要求,但還是建議盡量少地為一個(gè)表示私有域的屬性而使用寫(xiě)入存取方法。 

 返回   

四、文件 

  

4.1 工程文件 

  

4.1.1 命名 

  

工程文件應取個(gè)描述性的名字。例如,Delphi 4開(kāi)發(fā)者指南錯誤管理器 的工程名字是:DDGBugs.dpr。一個(gè)有關(guān)系統信息的程序的名字就應象 SysInfo.dpr。 

  

4.2 窗體文件 

  

4.2.1 命名 

  

一個(gè)窗體文件的取名應可以描述使用該窗體的目的,并加以后綴Frm。例如,一個(gè)“關(guān)于”的窗體的文件名應是AboutFrm.dpr。主窗體的文件名應是MainFrm.dpr。 

  

4.3 數據模板文件 

  

4.3.1 命名 

  

數據模板的取名應能表示使用該數據模板的目的,它的名稱(chēng)應加以?xún)蓚€(gè)字符的后綴DM。例如,自定義數據模板的文件名字應為CustomersDM.dfm。 

  

4.4 遠端數據模板文件 

  

4.4.1 命名 

  

遠端數據模板的取名應能表示使用該遠端數據模板的目的,它的名稱(chēng)應加以三個(gè)字符的后綴RDM。例如,自定義遠端數據模板的文件名字應為CustomersRDM.dfm。 

  

4.5 Unit文件 

  

4.5.1 通用Unit結構 

  

4.5.1.1 unit的名字 

  

Unit文件應取一個(gè)可描述性的名字。例如,包含應用程序主窗體的單元應叫做MainFrm.pas。 

  

4.5.1.2 uses子句 

  

在interface部分的uses子句應包含在interface部分中的代碼所需要的單元。去掉那些Delphi可以自動(dòng)加入到程序中的單元。 

  

在implementation部分的uses子句應只包含在implementation部分中的代碼所需要的單元的名字。去掉不必要的單元。 

  

4.5.1.3 interface部分 

  

interface部分應包含只那些其它單元所需要存取類(lèi)型的定義、變量、過(guò)程/函數的預定義等等。否則,就應放在implementation部分定義。 

  

4.5.1.4 implementation部分 

  

implementation部分應包含那些只在本單元中私用的類(lèi)型定義、變量、過(guò)程/函數定義等等。 

  

4.5.1.5 initialization部分 

  

不要在initialization 部分放入耗時(shí)長(cháng)的代碼,這將使程序的第一個(gè)界面出現 

得比較緩慢。 

  

4.5.1.6 finalization部分 

  

在這里要保證釋放你在Initialization部分所分配的任何資源。 

  

4.5.2 窗體單元 

  

4.5.2.1 命名 

  

一個(gè)窗體的單元文件應擁有與它所對應的窗體文件同樣的名稱(chēng)。例如,“關(guān)于”窗體的單元名稱(chēng)應為 AboutFrm.pas,而主窗體的單元名稱(chēng)應為MainFrm.pas。 

  

4.5.3 數據模板單元 

  

4.5.3.1 命名 

  

一個(gè)數據模板的單元文件應擁有與它所對應的數據模板文件同樣的名稱(chēng)。例如,一個(gè)自定義數據模板單元的名稱(chēng)應為CustomersDM.pas。 

  

4.5.4 一般目的單元 

  

4.5.4.1 命名 

  

一般目的單元的取名應符合使用該單元的目的。例如,一個(gè)實(shí)用程序單元取名為BugUtilities.pas。一個(gè)包含全局變量的單元取名為CustomerGlobals.pas。 

  

注意,該單元的名字不能與它的工程中所使用的所有包中的單元的名字相同。不贊成使用一般的或通用的單元名字。 

  

4.5.5 構件單元 

  

4.5.5.1 命名 

  

構件單元應放在獨立的目錄,以將它們同定義構件組或構件集合的單元區分開(kāi)來(lái)。它們要永遠同工程在不同的目錄。單元名字應同它們的內容相符。 

  

注意:查閱“用戶(hù)定義的構件”部分來(lái)獲得更多有關(guān)構件命名標準的信息。 

  

4.6 文件頭 

  

建議在所有源文件、工程文件、單元等等中使用信息化文件頭。一個(gè)良好的文件頭應包含以下信息: 

{ 

 版權… 著(zhù)作的年、月、日… 



 返回   

五、窗體和數據模板 

  

5.1 窗體 

  

5.1.1 窗體類(lèi)型命名標準 

  

窗體類(lèi)型的取名應能表達使用該窗體的目的。類(lèi)型定義應加以前綴T。前綴后面跟隨著(zhù)描述性的名字。最后,應加以Form后綴來(lái)描述名字。例如,一個(gè)“關(guān)于”的窗體的類(lèi)型的名字應為: 

        TAboutFrom = class(TForm); 

主窗體的定義為: 

        TMainForm = class(TForm); 

一個(gè)用戶(hù)接入窗體的名字應象: 

        TCustomerEntryForm = class(TForm); 

  

5.1.2 窗體實(shí)例命名標準 

  

窗體實(shí)例應是沒(méi)有帶前綴T的相應類(lèi)的名字。例如,對應于前面窗體類(lèi)型而言,其實(shí)例的名字應為: 

  

     類(lèi)型名稱(chēng)                   實(shí)例名稱(chēng) 

   TAboutForm                AboutForm 

   TMainForm                 MainForm 

   TCustomerEntryForm      CustomerEntryForm 

  

5.1.3 自動(dòng)創(chuàng )建窗體 

  

只有主窗體可以是自動(dòng)創(chuàng )建的除非有其它更好的理由不這樣做。所有其它的窗體必需從工程選項對話(huà)框中的自動(dòng)創(chuàng )建列表中移走。查閱以下部分來(lái)獲得更多的信息。 

  

5.1.4 模式窗體實(shí)例化函數 

  

所有的窗體單元都應包含一個(gè)窗體實(shí)例化函數,該函數用來(lái)創(chuàng )建、設置、模式地顯示窗體,并釋放窗體。該函數應返回窗體的模式結果。該函數要傳遞的參數應遵循本文檔指定的“參數傳遞”標準。通過(guò)這種方式封裝的函數性有助于代碼的再利用和維護。 

  

該窗體的變量要從單元中移走,并再窗體實(shí)例的函數中進(jìn)行本地式地定義。注意,這就意味著(zhù)該窗體必需從工程/選項對話(huà)框中的自動(dòng)創(chuàng )建列表中剔除。參考本文檔后面的“自動(dòng)創(chuàng )建窗體”。 

  

例如,下面的單元展示了再GetUserData窗體中的一個(gè)函數。 

  unit UserDataFrm; 

  interface 

  uses 

windows, Messages, SysUtils, Classes, Graphics, 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(var 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; 

        aUserID := StrToInt(UserDataForm.edtUserID.Text); 

      end; 

    finally 

      UserDataForm.Free; 

    end; 

  end; 

  end. 

  

5.2 數據模板 

  

5.2.1 數據模板命名標準 

  

數據模板的取名要符合使用該數據模板的目的。類(lèi)型的定義應加以前綴T,后面緊接著(zhù)描述性的名字,最后要加以后綴單詞“DataModule”。例如,一個(gè)自定義的數據模板有時(shí)候應該象: 

            TCustomerDataModule = class(TDataModule) 

一個(gè)命令式的數據模板的名字應象: 

            TOrdersDataModule = class(TDataModule) 

  

5.2.2 數據模板實(shí)例命名標準 

  

數據模板實(shí)例的名稱(chēng)應是對應不帶前綴T的類(lèi)型的名稱(chēng)。例如,對于前面的窗體類(lèi)型而言,其實(shí)例的名稱(chēng)應為: 

           類(lèi)型名稱(chēng)                      實(shí)例名稱(chēng) 

          TCustomerDataModule      CustomerDataModule 

          TOrdersDataModule        OrdersDataModule 

  返回  

六、包 

  

6.1 使用運行包和設計包的比較 

  

運行時(shí)刻的包應只包含其它構件包所要求的單元或構件。另外,包含屬性/構件編輯器和其它只為設計的代碼應放入到設計時(shí)刻包中。注冊單元應放在設計包中。 

  

6.2 文件命名標準 

  

包的名稱(chēng)應依照下面的例子: 

“iiilibvv.pkg” - 設計時(shí)刻包 

“iiistdvv.pkg” - 運行時(shí)刻包 

字符“iii”表示一個(gè)3字符標識前綴。這個(gè)前綴用來(lái)表明公司、個(gè)人或其它有標識意義的實(shí)體。 

  

字符“vv”表示為該包想要對應Delphi某個(gè)版本的包的版本號。 

  

注意,包的名字中包含“lib”或“std”的意思是表明這是一個(gè)設計時(shí)刻包還是一個(gè)運行時(shí)刻包。 

  

如果既是設計時(shí)刻包又是運行時(shí)刻包,該文件的命名是同上面一樣的,例如,為Delphi 4開(kāi)發(fā)者指南做的包的名稱(chēng)應為: 

  

DdgLib40.pkg – 設計時(shí)刻包 

DdgStd40.pkg – 運行時(shí)刻包 

 返回   

七、構件 

  

7.1 用戶(hù)自定義構件 

  

在標準構件中命名出來(lái)的構件的名稱(chēng)同在“類(lèi)類(lèi)型”部分定義中的一樣定義成一個(gè)類(lèi)類(lèi)型,不同的是它們有一個(gè)3字符的指示前綴,這個(gè)前綴可以表示公司、個(gè)人或其它實(shí)體。例如,一個(gè)為Delphi 4開(kāi)發(fā)者指南編寫(xiě)的時(shí)鐘構件的名稱(chēng)定義為: 

      TddgClock = class(TComponent) 

注意,那三個(gè)前綴字符是小寫(xiě)的。 

  

7.2 構件單元 

  

構件單元應只包含一個(gè)主要的構件,一個(gè)主要的構件是指出現在構件欄中的構件。主要構件的輔助構件/對象應放入到同一個(gè)單元中。 

  

7.3 使用注冊單元 

  

構件的注冊過(guò)程應從構件本身的單元中剔除,并放入到一個(gè)獨立的單元中。這個(gè)注冊單元可以用來(lái)注冊任何構件、屬性編輯器、構件編輯器、專(zhuān)家器等。 

  

構件的注冊只應在設計時(shí)刻包中進(jìn)行,注冊單元應包含在設計時(shí)刻包中而不應放在運行時(shí)刻包中。 

  

推薦使用的注冊單元的名稱(chēng)是: 

XxxReg.pas 

上面的3個(gè)前綴字符“Xxx”用來(lái)表示一個(gè)公司、個(gè)人或任何其它的實(shí)體。例如,在Delphi 4 開(kāi)發(fā)者指南中的注冊單元的名稱(chēng)應為 DdgReg.pas。 

  

7.4 構件實(shí)例命名約定 

  

所有的構件都應取個(gè)描述性的名稱(chēng)。由Delphi創(chuàng )建的缺省名的構件不會(huì )被遺棄。在設計構件類(lèi)型時(shí)應設計一個(gè)小寫(xiě)的前綴。使用前綴而不使用后綴的原因是在搜尋時(shí),在對象檢查器和代碼探索器中搜尋構件的名字比搜尋構件的類(lèi)型更容易實(shí)現。 

  

7.5 構件的前綴 

  

以下構件的前綴可以用來(lái)設計Delphi 4中的標準構件。請在此列表中加入第三方構件的前綴。 

  

7.6 Standard頁(yè) 

前綴      構件 

mm        TMainMenu 

pm        TPopupMenu 

mmi       TMainMenuItem 

pmi       TPopupMenuItem 

前綴      構件 

lbl       TLabel 

edt       TEdit 

mem       TMemo 

btn       TButton 

cb        TCheckBox 

rb        TRadioBox 

lb        TListBox 

cb        TComboBox 

scb       TScrollBar 

gb        TGroupBox 

rg        TRadioGroup 

pnl       TPanel 

cl        TCommandList 

7.7 Additional頁(yè) 

bbtn      TBitBtn 

sb        TSpeedButton 

me        TMaskEdit 

sg        TStringGrid 

dg        TDrawGrid 

img       TImage 

shp       TShape 

bvl       TBevel 

sbx       TScrollBox 

clb       TCheckListbox 

spl       TSplitter 

stx       TStaticText 

cht       TChart 

7.8 Win32頁(yè) 

tbc       TTabControl 

pgc       TPageControl 

il        TImageList 

re        TRichEdit 

thr       TTrackBar 

prb       TProgressBar 

ud        TUpDown 

hk        THotKey 

ani       TAnimate 

dtp       TDateTimePicker 

tv        TTreeView 

lv        TListView 

hdr       THeaderControl 

前綴      構件 

stb       TStatusBar 

tlb       TToolBar 

clb       TCoolBar 

7.9 System頁(yè) 

tm        TTimer 

pb        TPaintBox 

mp        TMediaPlayer 

olec      TOleContainer 

ddcc      TDDEClientItem 

ddci      TDDEClientItem 

ddsc      TDDEServerConv 

ddsi      TDDEServerItem 

7.10 Internet頁(yè) 

csk       TClientSocket 

ssk       TServerSocket 

wbd       TWebDispatcher 

pp        TPageProducer 

tp        TQueryTableProducer 

dstp      TDataSetTableProducer 

nmdt      TNMDayTime 

nec       TNMEcho 

nf        TNMFinger 

nftp      TNMFtp 

nhttp     TNMHttp 

nMsg      TNMMsg 

nmsg      TNMMSGServ 

nntp      TNMNNTP 

npop      TNMPop3 

nuup      TNMUUProcessor 

smtp      TNMSMTP 

nst       TNMStrm 

nsts      TNMStrmServ 

ntm       TNMTime 

nudp      TNMUdp 

psk       TPowerSock 

ngs       TNMGeneralServer 

html      THtml 

url       TNMUrl 

sml       TSimpleMail 

  

  

7.11 Data Access頁(yè) 

前綴      構件 

ds        TDataSource 

tbl       TTable 

qry       TQuery 

sp        TStoredProc 

db        TDataBase 

ssn       TSession 

bm        TBatchMove 

usql      TUpdateSQL 

7.12 Data Controls頁(yè) 

dbg       TDBGrid 

dbn       TDBNavigator 

dbt       TDBText 

dbe       TDBEdit 

dbm       TDBMemo 

dbi       TDBImage 

dblb      TDBListBox 

dbcb      TDBComboBox 

dbch      TDBCheckBox 

dbrg      TDBRadioGroup 

dbll      TDBLookupListBox 

dblc      TDBLookupComboBox 

dbre      TDBRichEdit 

dbcg      TDBCtrlGrid 

dbch      TDBChart 

7.13 Decision Cube頁(yè) 

dcb       TDecisionCube 

dcq       TDecisionQuery 

dcs       TDecisionSource 

dcp       TDecisionPivot 

dcg       TDecisionGrid 

dcgr      TDecisionGraph 

7.14 QReport頁(yè) 

qr        TQuickReport 

qrsd      TQRSubDetail 

qrb       TQRBand 

qrcb      TQRChildBand 

qrg       TQRGroup 

qrl       TQRLabel 

前綴      構件 

qrt       TQRText 

qre       TQRExpr 

qrs       TQRSysData 

qrm       TQRMemo 

qrrt      TQRRichText 

qrdr      TQRDBRichText 

qrsh      TQRShape 

qri       TQRImage 

qrdi      TQRDBMImage 

qrcr      TQRCompositeReport 

qrp       TQRPreview 

qrch      TQRChart 

7.15 Dialogs頁(yè) 

對話(huà)框構件是由構件封裝的真正的窗體,因此,它們應遵循窗體的命名約定。類(lèi)型已由構件的名稱(chēng)定義。它的實(shí)例的名稱(chēng)是Delphi自動(dòng)生成的類(lèi)型實(shí)例名字去掉數字后綴。舉例如下: 

      類(lèi)型                    實(shí)例名字 

    TOpenDialog             OpenDialog 

    TSaveDialog             SaveDialog 

    TOpenPictureDialog     OpenPictureDialog 

    TSavePictureDialog     SavePictureDialog 

    TFontDialog             FontDialog 

    TColorDialog            ColorDialog 

    TPrintSetupDialog      PrintSetupDialog 

    TFindDialog             FindDialog 

    TReplaceDialog         ReplaceDialog 

7.16 Win3.1頁(yè) 

dbll      TDBLookupList 

dblc      TDBLookupCombo 

ts        TTabSet 

ol        TOutline 

tnb       TTabbedNoteBook 

nb        TNoteBook 

hdr       THeader 

flb       TFileListBox 

dlb       TDirectoryListBox 

dcb       TDriveComboBox 

fcb       TFliterComboBox 

7.17 Samples頁(yè) 

gg        TGauge 

前綴      構件 

cg        TColorGrid 

spb       TSpinEdit 

spe       TSpinEdit 

dol       TDirectoryOutline 

cal       TCalendar 

ibea      TIBEventAlerter 

7.18 ActiveX頁(yè) 

cfx       TChartFX 

vsp       TVSSpell 

f1b       TF1Book 

vtc       TVTChart 

grp       TGraph 

7.19 Midas頁(yè) 

prv       TProvider 

cds       TClientDataSet 

qcds      TQueryClientDataSet 

dcom      TDCOMConnection 

olee      TOleEnterpriseConnection 

sck       TSocketConnection 

rms       TRemoteServer 

mid       TMidasConnection
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
代碼書(shū)寫(xiě)規范
『Delphi園地』
delphi代碼標準文檔
Delphi開(kāi)發(fā)DLL常見(jiàn)問(wèn)題
編程入門(mén)網(wǎng)-VB編程的七個(gè)優(yōu)良習慣
VB命名規則及代碼規范
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久