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

字號:

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