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;
本規(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;