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

