Delphi源程序格式書寫規(guī)范

字號(hào):

1.規(guī)范簡(jiǎn)介
    本規(guī)范主要規(guī)定Delphi源程序在書寫過程中所應(yīng)遵循的規(guī)則及注意事項(xiàng)。編寫該規(guī)范的目的是使公司軟件開發(fā)人員的源代碼書寫習(xí)慣保持一致。這樣做可以使每一個(gè)組員都可以理解其它組員的代碼,以便于源代碼的二次開發(fā)記憶系統(tǒng)的維護(hù)。
    2.一般格式規(guī)范
    2.1縮進(jìn)
    縮進(jìn)就是在當(dāng)源程序的級(jí)改變時(shí)為增加可讀性而露出的兩個(gè)空格??s進(jìn)的規(guī)則為每一級(jí)縮進(jìn)兩個(gè)空格。不準(zhǔn)許使用Tab。因?yàn)門ab會(huì)因?yàn)橛脩羲鞯脑O(shè)置不同而產(chǎn)生不同的效果。當(dāng)遇到begin 或進(jìn)入判斷、循環(huán)、異常處理、with語句、記錄類型聲明、類聲明等的時(shí)侯增加一級(jí), 當(dāng)遇到end或退出判斷、循環(huán)、異常處理、with語句、記錄類型聲明、類聲明等的時(shí)侯減少一級(jí)。例如:
    if TmpInt <> 100 then
     TmpInt := 100;
    2.2 Begin..End
    begin語句和end語句在源程序中要獨(dú)占一行,例如:
    for I := 0 to 10 do begin //不正確的用法
    end;
    for I := 0 to 10 do //正確的用法
    begin
    end;
    2.3空格
    在操作符及邏輯判斷符號(hào)的兩端添加空格,例如:I := I + 1;,a and b 等,但添加括號(hào)時(shí)不需要空格。例如:if ( a > b ) then //錯(cuò)誤的用法
    If (a > b) then //正確的用法
    又例如:procedure Test(Param1: integer; Param3: string);
    3. Object Pascal語法書寫格式規(guī)范
    3.1保留字
    Object Pascal 語言的保留字或關(guān)鍵詞應(yīng)全部使用小寫字母。
    3.2過程和函數(shù)
    3.2.1命名及格式
    過程和函數(shù)的名稱應(yīng)全部使用有意義的單詞組成,并且所有單詞的第一個(gè)字母應(yīng)該使用大寫字母。例如:
    procedure formatharddisk;//不正確的命名
    procedure FormatHardDisk;//正確的命名
    設(shè)置變量?jī)?nèi)容的過程和函數(shù),應(yīng)使用Set作為前綴,例如:
    procedure SetUserName;
    讀取變量?jī)?nèi)容的過程和函數(shù),應(yīng)使用Get作為前綴,例如:
    function GetUserName: string;
    3.2.2 過程和函數(shù)的參數(shù)
    3.2.2.1命名
    統(tǒng)一類型的參數(shù)寫在同一句中:
    procedure Foo(Param1, Param2, Param3: Integer; Param4: string);
    3.2.2.2命名
    所有參數(shù)必須是有意義的;并且當(dāng)參數(shù)名稱和其它屬性名稱重了的時(shí)候,加一個(gè)前綴‘A’, 例如:
    procedure SomeProc(AUserName: string; AUserAge: integer);
    3.2.2.3命名沖突
    當(dāng)使用的兩個(gè)unit中包括一個(gè)重名的函數(shù)或過程時(shí), 那幺當(dāng)你引用這一函數(shù)或過程時(shí),將執(zhí)行在use 子句中后聲明的那個(gè)unit中的函數(shù)或過程。為了避免這種‘uses-clause-dependent’需要在引用函數(shù)或過程時(shí),寫完整函數(shù)或過程的出處。例如:
    SysUtils.FindClose(SR);
    Windows.FindClose(Handle);
    3.3 變量
    3.3.1 變量命名及格式
    首先所有變量必須起有意義的名字,使其它組員可以很容易讀懂變量所代表的意義,變量命名可以采用同義的英文命名,可使用幾個(gè)英文單詞,但每一單詞的首字母必須大寫。例如:
    var
     WriteFormat::string;
    同時(shí)對(duì)于一些特定類型可采用一定的簡(jiǎn)寫如下:
    指針類型
     P
    紀(jì)錄類型
     Rec
    數(shù)組類型
     Arr
    類
     Class
    循環(huán)控制變量通常使用單一的字符如:i, j, 或 k。 另外使用一個(gè)有意義的名字例如:UserIndex ,也是準(zhǔn)許的。
    3.3.2 局部變量
    在過程中使用局部變量遵循所有其它變量的命名規(guī)則。
    3.3.3 全局變量
    盡量不使用全局變量,如必須使用全局變量則必須加前綴‘g’,同時(shí)應(yīng)在變量名稱中體現(xiàn)變量的類型。例如:
     gprecUserCount: point;//名稱為UserCount的全局變量,其類型為指向一結(jié)構(gòu)的指針
    但是在模塊內(nèi)部可以使用全局變量。所有模塊內(nèi)全局變量必須用‘F’為前綴。如果幾個(gè)模塊之間需要進(jìn)行資料交換,則需要通過聲明屬性的方法來實(shí)現(xiàn)。例如:
    type
     TFormOverdraftReturn = class(TForm)
     private
    { Private declarations }
    FuserName: string;
    FuserCount: Integer;
    Procedure SetUserName(Value: string);
    Function GetUserName: string;
     public
    { Public declarations }
    property UserName: string read GetUserName write SetUserName;
    property UserCount: Integer read FuserCount write FuserCount;
     end;
    3.4類型
    3.4.1 大小寫協(xié)議
    保留字的類型名稱必須全部小寫。Win32 API 的類型通常全部大寫,對(duì)于其它類型則首字母大寫,其余字母小寫,例如:
    var
     MyString: string; // reserved word
     WindowHandle: HWND; // Win32 API type
     I: Integer; // type identifier introduced in System unit
    3.4.2 浮點(diǎn)類型
    盡量不使用 Real 類型,他只是為了和舊的Pascal代碼兼容,盡量使用Double 類型。Double 類型是對(duì)處理器和數(shù)據(jù)總線做過化的并且是IEEE定義的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)。當(dāng)數(shù)值超出Double的范圍時(shí),使用Extended 。但Extended不被Jave支持。但使用其它語言編寫的DLL時(shí)可能會(huì)使用Single 類型。
    3.4.3 枚舉類型
    枚舉類型的名字必須有意義并且類型的名字之前要加前綴‘T’。枚舉類型的內(nèi)容的名字必須包含枚舉類型名稱的簡(jiǎn)寫,例如:
    TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
    3.4.4 數(shù)組類型
    數(shù)組類型的名字必須有意義并且類型的名字之前要加前綴‘T’。如果聲明一個(gè)指向數(shù)組類型的指針必須在該類型的名字之前加前綴‘P’,例如:
    type
     PCycleArray = ^TCycleArray;
     TCycleArray = array[1..100] of integer;
    3.4.5記錄類型
    記錄類型的名字必須有意義并且類型的名字之前要加前綴‘T’。如果聲明一個(gè)指向數(shù)組類型的指針必須在該類型的名字之前加前綴‘P’,例如:
    type
     PEmployee = ^TEmployee;
     TEmployee = record
     EmployeeName: string
     EmployeeRate: Double;
     end;