中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
『Delphi園地』
Delphi編程代碼規(guī)范 日期:2006-02-20 作者: 人氣:5490 查看:[ ]

1. 一般的源代碼格式規(guī)則 2
1.1 縮進(jìn) 2
1.2 空格 2
1.3 邊距 2
1.4 顏色及文字屬性 2
1.5 begin···end 2
2. OBJECT PASCAL 3
2.1 括號 3
2.2 保留字和關(guān)鍵字 3
2.3 過程和函數(shù)(例程) 3
2.4 變量 4
2.5 常量(const) 5
2.6 資源串(resourcestring) 5
2.7 類型 5
2.8 構(gòu)造類型 6
2.9 語句 6
2.10 結(jié)構(gòu)化異常處理 8
2.11 類 8
3. 文件 10
3.1 項(xiàng)目文件 10
3.2 Form文件 10
3.3 數(shù)據(jù)模塊文件 10
3.4 遠(yuǎn)程數(shù)據(jù)模塊文件 10
3.5 單元文件 10
3.6 文件頭 11
3.7 函數(shù)或過程頭格式如下 11
4. Form與數(shù)據(jù)模塊 12
4.1 Form 12
4.2 數(shù)據(jù)模塊 13
5. 包 14
5.1 運(yùn)行期包與設(shè)計(jì)期包 14
5.2 文件命名標(biāo)準(zhǔn) 14
6. 元件 14
6.1 自定義的元件 14
6.2 元件實(shí)例的命名規(guī)則 15
6.3 元件性質(zhì)標(biāo)識名 15
6.4 元件的前綴 15


1. 一般的源代碼格式規(guī)則
1.1 縮進(jìn)
縮進(jìn)就是每級間有兩個(gè)空格。不要在源代碼中保存制表符。這是因?yàn)椋票矸膶挾入S著不同的用戶設(shè)置和代碼管理實(shí)用程序(打印、文檔及版本控制等)而不同。
通過使用Tools | Editor Options菜單,在Editor Properties對話框的General頁上,不要選中Use tab Character和Optimal Fill復(fù)選框,這樣,制表符就不會被保存。
1.2 空格
遇到如下情況,需要添加空格:
1) 逗號的后面;
2) 冒號的后面;
3) 等號的前后;
4) 賦值號的前后
5) 運(yùn)算符(+、-、*、/)的前后。
1.3 邊距
邊距設(shè)置為80個(gè)字符。源代碼一般不會因?qū)懸粋€(gè)單詞而超過邊距,但本規(guī)則比較靈活。只要可能,長度超過一行的語句應(yīng)當(dāng)用逗號或運(yùn)算符換行。換行后,應(yīng)縮進(jìn)兩個(gè)字符。
1.4 顏色及文字屬性
通過使用Tools | Editor Options菜單,在Editor Properties對話框的Color頁上,設(shè)置相應(yīng)元素的顏色及文字屬性。其中:
注釋(Comment): 斜體深綠色
保留字(Reserved word): 粗體天藍(lán)色
字符串(String): 普通洋紅色
數(shù)值(Number): 普通紅色
其他元素取Delphi IDE缺省設(shè)置。
1.5 begin···end
begin語句必須單獨(dú)占一行,例如,下面第一行是錯(cuò)誤的,而第二行正確:
for i := 0 to l0 do begin // 錯(cuò), begin與for在同一行
for i := 0 to 10 do // 對, begin在另外一行中
begin
end;

本規(guī)則的一個(gè)特殊情況是,當(dāng)begin為else語句的一部分時(shí),例如:

if some statement = then
begin
...
end
else begin
SomeOtherStatement;
end;

end語句總是單獨(dú)一行。
當(dāng)begin不為else語句的一部分時(shí),相應(yīng)的end語句與begin語句的縮進(jìn)量相同。
2. OBJECT PASCAL
2.1 括號
在左括號與下一個(gè)字符之間沒有空格。同樣,右括號與前一字符間也沒有空格。下面的例于演示了正確與不正確的空格。

CallProc( AParameter ); // 錯(cuò)!
CallProc(AParameter); // 正確!

不要在語句中包含多余的括號。在源代碼中,括號只有在確實(shí)需要時(shí)才使用。下面的例子演示了正確與不正確用法:
if (i = 42) then // 錯(cuò),括號是多余的
if (i = 42)or (j = 42) then // 正確,必須使用括號
2.2 保留字和關(guān)鍵字
Object Pascal語言的保留字和關(guān)鍵字總是全部小寫。
2.3 過程和函數(shù)(例程)
2.3.1 命名與格式
■ 例程名應(yīng)當(dāng)以大寫字母開始,且大小寫交錯(cuò)以增加可讀性。
下面是一個(gè)不正確的寫法:
procedure thisisapoorlyformattedroutinename;
改成這樣寫就對了:
procedure ThisIsMuchMoreReadableRoutineName;
■ 例程名應(yīng)當(dāng)有意義。進(jìn)行一個(gè)動(dòng)作的例程最好在名稱前加上表示動(dòng)作的動(dòng)詞為前綴。
例如:
procedure FormatHardDrive;
■ 設(shè)置輸入?yún)?shù)值的例程名應(yīng)當(dāng)以Set為其前綴,例如:
procedure SetUserName;
■ 獲取數(shù)值的例程名應(yīng)當(dāng)以Get為其前綴,例如:
function GetUserName: string;
2.3.2 形參
■ 格式
只要可能,同一類型的形參應(yīng)當(dāng)歸并在一起:
procedureFoo(Param1, Param2,Param3: Integer; Param4: string);
■ 命名
所有形參的名稱都應(yīng)當(dāng)表達(dá)出它的用途。如果合適的話,形參的名稱最好以字母A為前綴,例如:
procedure SomeProc(AuserName: string; AuserAge: integer);
當(dāng)參數(shù)名與類的特性或字段同名時(shí),前綴A就有必要了。
■ 參數(shù)順序
形參的順序主要要考慮寄存器調(diào)用規(guī)則。
最常用的參數(shù)應(yīng)當(dāng)作為第一個(gè)參數(shù),按使用頻率依次從左到右排。
輸入?yún)?shù)位于輸出參數(shù)之前。
范圍大的參數(shù)應(yīng)當(dāng)放在范圍小的參數(shù)之前。例如:
SomeProc(AP1anet, AContinent, ACountry, AState, ACity);
有些則例外。例如,在事件處理句柄中,TObject類型的Sender參數(shù)往往是第一個(gè)要傳遞的參數(shù)。
■ 常量參數(shù)
要使記錄、數(shù)組、短字符串或接口類型的參數(shù)不能被例程修改,就應(yīng)當(dāng)把形參標(biāo)以const。這樣,編譯器將以最有效的方式生成代碼,保證傳遞的參數(shù)不可變。
如果其他類型的參數(shù)希望不被例程所修改,也可以標(biāo)上const。盡管這對效率沒有影響,但這給例程的調(diào)用者帶來了更多的信息。
■ 命名沖突
當(dāng)兩個(gè)單元中含有相同名稱的例程時(shí),如果調(diào)用該例程,實(shí)際被調(diào)用的是uses子句中最后出現(xiàn)的那個(gè)單元中的例程。為避免這種情況,可在方法名前加想要的單元名,例如:
SysUtils.FindClose(SR);

Windows.FindClose(Handle)
2.4 變量
2.4.1 變量的命名與格式
變量的名稱應(yīng)當(dāng)能夠表達(dá)出它的用途。
循環(huán)控制變量常常為單個(gè)字母,諸如I、J或K。也可以使用更有意義的名稱,例如UserIndex。布爾變量名必須能清楚表示出True和False值的意義。
2.4.2 局部變量
局部變量用于例程內(nèi)部,遵循其他變量的命名規(guī)則。
局部變量加前綴l_(循環(huán)控制變量除外),如l_UserName。
如果需要的話,應(yīng)當(dāng)在例程的入口處立即初始化變量。局部的AnsiString類型的變量自動(dòng)被初始化為空字符串,局部的接口和調(diào)度接口類型的變量自動(dòng)被初始化為nil,局部的Variant和OleVariant類型的變量自動(dòng)被初始化為Unassigned。
2.4.3 全局變量
一般不鼓勵(lì)使用全局變量。不過,有時(shí)候需要用到。即使如此,也應(yīng)當(dāng)把全局變量限制在需要的環(huán)境中。例如,一個(gè)全局變量可能只在單元的Implementation部分是全局的。
全局?jǐn)?shù)據(jù)如果將由許多單元使用,就應(yīng)移動(dòng)到一個(gè)公用單元里被所有對象使用。
全局?jǐn)?shù)據(jù)可在聲明時(shí)直接初始化為一個(gè)值。注意,所有全局變量自動(dòng)進(jìn)行零初始化,因此,不要將全局變量初始化為諸如0、nil、’’或Unassigned等空值。零初始化的全局變量在.EXE文件中不占空間。零初始化的數(shù)據(jù)保存在虛擬的數(shù)據(jù)段中,而虛擬數(shù)據(jù)段只在應(yīng)用程序啟動(dòng)時(shí)才分配內(nèi)存。非零初始化的全局?jǐn)?shù)據(jù)則在.EXE文件中占空間。
2.5 常量(const)
常量的命名應(yīng)當(dāng)能夠表達(dá)出它的用途。
如果有類別,該類別的所有常量加前綴,前綴為類別縮寫的小寫字母;例如:對于文件打開方式(File Open Modes),定義常量:
fmOpenRead = $0000;
fmOpenWrite = $0001;
如果無類別,常量的前綴為con。例如:conProductName = ‘GBG2000’;
2.6 資源串(resourcestring)
如果在模塊中有提示信息類的字符串,把該字符串定義為資源串。
資源串的命名應(yīng)當(dāng)能夠表達(dá)出它的用途。
如果有類別,該類別的所有資源串加前綴,前綴為類別縮寫的小寫字母,同常量定義。
如果無類別,資源串的前綴為rs。例如:rsFileOpenError = ‘文件打開失敗 !’;
2.7 類型
2.7.1 大小寫規(guī)則
類型標(biāo)識符是保留字,應(yīng)當(dāng)全部小寫。Win32 API類型常常全部大寫,并且遵循諸如Windows.pas或其他API單元中關(guān)于特定類型名的規(guī)則。對于其他變量名,第一個(gè)字母應(yīng)大寫,其他字母則大小寫交錯(cuò)。
下面是一些例子:
var
Mytring: string; // 保留字
WindowsHandle: HWND; // Win32 API 類型
i: Integer; // 在System單元中介紹的類型標(biāo)識
2.7.2 浮點(diǎn)型
不鼓勵(lì)使用Real類型,因?yàn)樗皇菫榱伺c老的Pascal代碼兼容而保留的。通常情況下對于浮點(diǎn)數(shù)應(yīng)當(dāng)使用Double。Double可被處理器優(yōu)化,是IEEE定義的標(biāo)準(zhǔn)的數(shù)據(jù)格式。當(dāng)需要比Double提供的范圍更大時(shí),可以使用Extend。Extend是Intel專用的類型,Java不支持。當(dāng)浮點(diǎn)變量的物理字節(jié)數(shù)很重要時(shí)(可能使用其他語言編寫的DLL),則應(yīng)當(dāng)使用Single。
2.7.3 枚舉型
枚舉類型名必須代表枚舉的用途。名稱前要加T字符作為前綴,表示這是個(gè)數(shù)據(jù)類型。枚舉類型的標(biāo)識符列表的前綴應(yīng)包含2~3個(gè)小寫字符,來彼此關(guān)聯(lián)。例如:
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMeta1, stRB);
枚舉類型的變量實(shí)例的名稱與類型相同,但沒有前綴T,除非為了給變量一個(gè)更加特殊的名稱,諸如FavoriteSongType1、FavoriteSongType2等。
2.7.4 Variant和OleVariant
一般不建議使用Variant和OleVariant。但是,當(dāng)數(shù)據(jù)類型只有在運(yùn)行期才知道時(shí)(常常是在COM和數(shù)據(jù)庫應(yīng)用程序中),這兩個(gè)類型對編程就有必要。當(dāng)進(jìn)行諸如Automation、ActiveX控件的COM編程時(shí),應(yīng)當(dāng)使用0leVariant;而對于非COM編程,則應(yīng)當(dāng)使用Variant。這是因?yàn)?,Variant能夠有效地保存Delphi的原生字符串,而OleVariant則將所有字符串轉(zhuǎn)換為OLE字符串(即WideChar字符串),且沒有引用計(jì)數(shù)功能。
2.8 構(gòu)造類型
2.8.1 數(shù)組類型
數(shù)組類型名應(yīng)表達(dá)出該數(shù)組的用途。類型名必須加字母T為前綴。如果要聲明一個(gè)指向數(shù)組類型的指針,則必須加字母P為前綴,且聲明在類型聲明之前。例如:
type
PCycleArray = ^TCycleArray;
TCycleArray = array[1..100] of integer;
實(shí)際上,數(shù)組類型的變量實(shí)例與類型名稱相同,但沒有T前綴。
2.8.2 記錄類型
記錄類型名應(yīng)表達(dá)出記錄的用途。類型名必須加字母T為前綴。如果要聲明一個(gè)指向記錄類型的指計(jì),則必須加字母P為前綴,且其聲明在類型聲明之前。例如:
type
PEmployee = ^TEmployee;
TEmployee = record
EmployeeName: string;
EmployeeRate: Double;
end;
2.9 語句
2.9.1 if語句
在if/then/else語句中,最有可能執(zhí)行的情況應(yīng)放在then子句中,不太可能的情況放在else子句中。
為了避免出現(xiàn)許多if語句,可以使用case語句代替。
如果多于5級,不要使用if語句。請改用更清楚的方法。
不要在if語句中使用多余的括號。
如果在if語句中有多個(gè)條件要測試,應(yīng)按照計(jì)算的復(fù)雜程度從右向左排。這樣,可以使代碼充分利用編譯器的短路估算邏輯。例如,如果Conditionl比Condition2快,Condition2比Condition3快,則if語句應(yīng)這樣構(gòu)造:
if Condition1 and Condition2 and Condition3 then
如果無else子句且執(zhí)行語句只有一句,該執(zhí)行語句寫在then后,例如:
if Condition then do some thing;
2.9.2 case語句
■ 概述
case語句中每種情況常量應(yīng)當(dāng)按數(shù)字或字母的順序排列。
每種情況的動(dòng)作語句應(yīng)當(dāng)簡短且通常不超過4~5行代碼。如果動(dòng)作太復(fù)雜,應(yīng)將代碼單獨(dú)放在一個(gè)過程或函數(shù)中。
case語句的else子句只用于默認(rèn)情況或錯(cuò)誤檢測。
■ 格式
case語句遵循其他一般的縮進(jìn)和命名規(guī)則。
2.9.3 while語句
建議不要使用Exit過程來退出whi1e循環(huán)。如果需要的話,應(yīng)當(dāng)使用循環(huán)條件退出循環(huán)。
所有對while循環(huán)進(jìn)行初始化的代碼應(yīng)當(dāng)位于while入口前,且不要被無關(guān)的語句隔開。
2.9.4 for語句
如果循環(huán)次數(shù)是確定的,應(yīng)當(dāng)用for語句代替while語句。
2.9.5 repeat語句
repeat語句類似于while循環(huán),且遵循同樣的規(guī)則。
2.9.6 with語句
■ 概述
with語句應(yīng)小心使用。要避免過度使with語句,尤其是在with語句中使用多個(gè)對象或記錄。例如:
with Record1, Record2 do
這些情況很容易迷惑編程人員,且導(dǎo)致檢測bug困難。
■ 格式
with語句也遵循本章關(guān)于命名和縮進(jìn)的規(guī)則。
2.10 結(jié)構(gòu)化異常處理
2.10.1 概述
異常處理主要用于糾正錯(cuò)誤和保護(hù)資源。這意味著,凡是分配資源的地方,都必須使用:try…finally來保證資源得到釋放。不過,如果是在單元的initialization/finalization部分或者對象的構(gòu)造/析構(gòu)中來分配/釋放資源則例外。
2.10.2 try…final1y的用法
可能的情況,每個(gè)資源分配應(yīng)當(dāng)與:try…finally結(jié)構(gòu)匹配。例如,下面代碼可能導(dǎo)致錯(cuò)誤:
SomeClassl := TSomeClass.Create;
SomeClass2 := TSomeClass.Create;
try
{do some code}
finally
SomeClass1.Free;
SomeClass2.Free;
end;
上述資源分配的一個(gè)安全途徑是:
SomeClass1 := TSomeClass.Create;
try
SomeClass2 := TSomeClass.Create;
try
{do some code}
finally
SomeClass2.Free;
end;
finally
SomeClass1.Free;
end;
2.10.3 try…except的用法
如果您希望在發(fā)生異常時(shí)執(zhí)行一些任務(wù),可以使用try…except。通常,沒有必要為了簡單地顯示一個(gè)錯(cuò)誤信息而使用try…except,因?yàn)锳pplication對象能夠自動(dòng)根據(jù)上下文做到這一點(diǎn)。如果要在except子句中激活默認(rèn)的異常處理,可以再次觸發(fā)異常。
2.10.4 try…except…else的用法
不鼓勵(lì)使用帶else子句的try…except,因?yàn)檫@將阻塞所有的異常,包括您沒有準(zhǔn)備的異常。
2.11 類
2.11.1 命名與格式
類的名稱應(yīng)當(dāng)表達(dá)出類的用途。類名前要加字母T,表示它是一個(gè)類型。例如:
type
TCustomer = class(TObject);
類的實(shí)例名稱與類名相同,只不過沒有前綴T。
var
Customer: TCustomer;
注意:關(guān)于元件的命名,請參閱“元件類型命名標(biāo)準(zhǔn)”部分。
2.11.2 字段
■ 命名與格式
字段的命名遵循與變量相同的規(guī)則,只不過要加前綴F,表示這是字段。
■ 可見性
所有字段必須為私有。如果要在類的作用域之外訪問字段,可借助于類的特性來實(shí)現(xiàn)。
2.11.3 方法
■ 命名與格式
方法的命名遵循與過程和函數(shù)相同的規(guī)則。
■ 靜態(tài)方法
當(dāng)您不希望一個(gè)方法被派生類重載時(shí),應(yīng)當(dāng)使用靜態(tài)方法。
■ 虛擬方法與動(dòng)態(tài)方法
當(dāng)您希望一個(gè)方法能被派生類重載,應(yīng)當(dāng)使用虛擬方法。如果類的方法要被多個(gè)派生類直接或間接地使用,則應(yīng)當(dāng)用動(dòng)態(tài)方法。例如,某一個(gè)類含有一個(gè)被頻繁重載的方法,并有100個(gè)派生類,則應(yīng)將方法定義為動(dòng)態(tài)的,這樣,可以減少內(nèi)存的開銷。
■ 抽象方法
如果一個(gè)類要?jiǎng)?chuàng)建實(shí)例,則不要使用抽象方法。抽象方法只能在那些從不創(chuàng)建實(shí)例的基類中使用。
■ 特性訪問方法
所有特性訪問方法應(yīng)當(dāng)定義在類的私有或保護(hù)部分。
特性訪問方法遵循與過程和函數(shù)相同的規(guī)則。用于讀的方法應(yīng)當(dāng)加Get前綴,用于寫的方法應(yīng)當(dāng)加Set前綴,并且有一個(gè)叫Value的參數(shù),其類型與特性的類型相同。例如:
TSomeClass = class(TObject);
private
FSomeField: Integer;
protected
function GetSomeField: Integer;
procedure SetSomeField(Value: Integer);
public
property SomeField: Integer read GetSomeField write SetSomeField;
end;
2.11.4 特性
特性作為私有字段的訪問器,遵循與字段相同的命名規(guī)則,只不過沒有F前綴。
特性名應(yīng)為名詞,而不是動(dòng)詞。特性是數(shù)據(jù),而方法是動(dòng)作。
數(shù)組特性名應(yīng)當(dāng)是復(fù)數(shù),而一般的特性應(yīng)當(dāng)是單數(shù)。
2.11.5 訪問方法的使用
盡管不是必須,但還是建議您使用寫訪問方法來訪問代表私有字段的特性。
3. 文件
3.1 項(xiàng)目文件
項(xiàng)目文件的名稱應(yīng)當(dāng)具有描述意義。例如,“The Delphi 4 Developer’s Guide Bug Manager”的項(xiàng)目名稱為DDGBugs.dpr,一個(gè)系統(tǒng)信息程序的名稱為SysInfo.dpr。
3.2 Form文件
Form文件的名稱應(yīng)當(dāng)表達(dá)出Form的用途,且具有Frm后綴。例如,About的文件名叫AboutFrm,主Form的文件名叫MainFrm。
3.3 數(shù)據(jù)模塊文件
數(shù)據(jù)模塊文件的名稱應(yīng)當(dāng)表達(dá)出數(shù)據(jù)模塊的作用,且具有DM后綴。例如,Customers數(shù)據(jù)模塊的文件名叫CustomersDM.dfm。
3.4 遠(yuǎn)程數(shù)據(jù)模塊文件
遠(yuǎn)程數(shù)據(jù)模塊文件的名稱應(yīng)當(dāng)表達(dá)出遠(yuǎn)程數(shù)據(jù)模塊的用途。名稱后要加RDM后綴。例如,Customers遠(yuǎn)程數(shù)據(jù)模塊的文件叫CustomersRDM.dfm。
3.5 單元文件
3.5.1 普通單元的結(jié)構(gòu)
■ 單元名
單元的名稱應(yīng)當(dāng)有描述性。例如,應(yīng)用程序的主Form單元叫MainFrm.pas。
■ Uses子句
Interface部分的Uses子句應(yīng)當(dāng)只包含該部分需要的單元。不要包含可能由Delphi自動(dòng)添加的單元名。
Implementation部分的Uses子句應(yīng)當(dāng)只包含在該部分需要的單元,不要有多余的單元。
■ Interface部分
Interface部分應(yīng)當(dāng)只包含需要被外部單元訪問的類型、變量、過程與函數(shù)的聲明。而且,這些聲明應(yīng)當(dāng)在Implementation部分之前。
■ Implementation部分
Implementation部分包括本單元私有的類型、變量、過程與函數(shù)的聲明。
■ Initialization部分
不要在單元的Initialization部分放置花費(fèi)時(shí)間很多的代碼。否則,將導(dǎo)致應(yīng)用程序啟動(dòng)時(shí)顯得很慢。
■ Finalization部分
確保釋放所有在Initialization部分中分配的資源。
3.5.2 Form單元
Form單元文件的名稱與相應(yīng)的Form名稱相同。例如:About的單元名稱叫AboutFrm.pas。主From的單元文件名稱叫為MainFrm.pas。
3.5.3 數(shù)據(jù)模塊單元
數(shù)據(jù)模塊單元文件的名稱與相應(yīng)的數(shù)據(jù)模塊名稱相同。例如,Customers數(shù)據(jù)模單元的名稱叫CustomersDM.pas。
3.5.4 通用的單元
通用單元的名稱應(yīng)當(dāng)表達(dá)出它的用途。例如,一個(gè)實(shí)用工具單元的名稱叫ugUtilities.pas,包含全局變量的單元名稱叫CustomerGlobals.pas。
注意,一個(gè)項(xiàng)目中單元名稱必須是唯一的。
3.5.5 元件單元
元件單元應(yīng)放在單獨(dú)的路徑中,以區(qū)別于定義元件的單元。它們一般與項(xiàng)目不放在同一路徑下。單元文件名稱應(yīng)表達(dá)出其內(nèi)容。
注意,有關(guān)元件命名標(biāo)準(zhǔn)的更多信息,請參閱“自定義元件”部分。
3.6 文件頭
所有源文件和項(xiàng)目文件都應(yīng)具有文件頭。一個(gè)正確的文件頭應(yīng)包含以下信息:
//////////////////////////////////////////////////////////////////////(80 chars)// 創(chuàng)建:Tujh010618 (創(chuàng)建信息:創(chuàng)建者、創(chuàng)建日期)
// 版權(quán):邁特安 (版權(quán))
// 功能: (本文件的主要功能)
// 函數(shù): (主要函數(shù)和過程;可?。?br>//////////////////////////////////////////////////////////////////////
3.7 函數(shù)或過程頭格式如下
//////////////////////////////////////////////////////////////////////
// 創(chuàng)建:Tujh010618 (創(chuàng)建信息:創(chuàng)建者、創(chuàng)建日期)
// 功能:…… (本函數(shù)或過程的主要功能)
// 參數(shù):Param1-……
// Param2-(out) …… (out表示輸出參數(shù))
// 返回:…… (類型、值)
// 說明:…… (備注信息、調(diào)用方法、初始化數(shù)值等)
//////////////////////////////////////////////////////////////////////
4. Form與數(shù)據(jù)模塊
4.1 Form
4.1.1 Form類型的命名標(biāo)準(zhǔn)
Form類型的名稱應(yīng)當(dāng)表達(dá)出Form的用途,且要加T為前綴,后跟描述性名,最后是Form。例如,About的類型名稱為:
TAboutForm = class(TForm)
主frm的類型名稱為:
TMainForm = class(TForm)
客戶登錄Form的類型名稱為:
TCustomerEntryForm = class(TForm)
4.1.2 Form實(shí)例的命名標(biāo)準(zhǔn)
Form實(shí)例的名稱與相應(yīng)的類型名稱相同,但沒有前綴T。例如,前面提到的Form類與Form實(shí)例的名稱為:
類型名 實(shí)例名
---------------------------------------------------------------------------
TAboutFo rm AboutForm
TMainForm MainForm
TCustomerEntryForm CustomerEntryForm
4.1.3 自動(dòng)創(chuàng)建的Form
除非特別原因,只有主Form才自動(dòng)生成。其他所有Form必須從Project Options對話框的自動(dòng)生成列表中刪除。更進(jìn)一步的信息,請參閱后面幾節(jié)。
4.1.4 模式Form實(shí)例化函數(shù)
所有Form單元都應(yīng)當(dāng)含有實(shí)例化函數(shù),用于創(chuàng)建、設(shè)置、模式顯示和釋放Form。這個(gè)函數(shù)將返回由Form返回的模式結(jié)果。傳遞給這個(gè)函數(shù)的參數(shù)遵循“參數(shù)傳遞”的規(guī)則。之所以要這樣封裝,是為了便于代碼的重用和維護(hù)。
Form的變量應(yīng)當(dāng)從單元中移走,改在實(shí)例化函數(shù)中作為局部變量定義。注意,這要求從Project Options對話框的自動(dòng)生成列表中移走該Form。
例如,下面的單元文件演示了GetUserData的實(shí)例化函數(shù)。
unit UserDataFrm;
interface
uses
Windows, Messages, SysUtils, C1asses, 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: Integ): Word;
var
UserDataForm: TUserDataFrom;
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.edtUserName.Text);
end;
finally
UserDataForm.Free;
end;
end;
end.
4.2 數(shù)據(jù)模塊
4.2.1 數(shù)據(jù)模塊的命名標(biāo)準(zhǔn)
數(shù)據(jù)模塊類型名稱應(yīng)表達(dá)出它的用途,且要加前綴T ,后跟描述性名稱,最后是DataModule。例如,Customer數(shù)據(jù)模塊的類型名稱為:
TCustomerDataModule = class(TDataModule);
Orders數(shù)據(jù)模塊的類型名稱為:
TOrderDataModule = class(TDataModule);
4.2.2 數(shù)據(jù)模塊實(shí)例的命名標(biāo)準(zhǔn)
數(shù)據(jù)模塊實(shí)例的名稱應(yīng)當(dāng)與相應(yīng)的類型名稱相同,但沒有前綴T。例如,前面的數(shù)據(jù)模塊類型、實(shí)例名稱如下:
類型名稱 實(shí)例名
---------------------------------------------------------------------------
TCustomerDataModule CustomerDataModule
TOrderDataModule OrderDataModule
5. 包
5.1 運(yùn)行期包與設(shè)計(jì)期包
運(yùn)行期包中應(yīng)當(dāng)只包含所需要的單元。那些特性編輯器和元件編輯器的單元應(yīng)當(dāng)放在設(shè)計(jì)期包中。注冊單元也應(yīng)當(dāng)放在設(shè)計(jì)期包中。
5.2 文件命名標(biāo)準(zhǔn)
包的命名遵循下列模式:
iiilibvv.pkg -- 設(shè)計(jì)期包
iiistdvv.pkg -- 運(yùn)行期包
其中:
iii代表一個(gè)3字符的前綴,用于標(biāo)識公司、個(gè)人或其他需要標(biāo)識的事情。
vv代表包的版本號,其中也包含了De1phi的版本號。
注意:包名稱中的lib或std 分別表示這是設(shè)計(jì)期包或運(yùn)行期包。例如,《De1phi 5開發(fā)大全》中的包是這樣命名的:
ddgLib50.pkg -- 設(shè)計(jì)期包
ddgStd50.pkg -- 運(yùn)行期包
6. 元件
6.1 自定義的元件
6.1.1 元件類型的命名標(biāo)準(zhǔn)
元件的命名與類的命名類似,只不過它有3個(gè)字符的前綴。這些前綴用以標(biāo)識公司、個(gè)人或其他實(shí)體。例如,一個(gè)時(shí)鐘元件可以這樣聲明:
TddgClock = class(TComponent)
注意,作為前綴的3個(gè)字符要小寫。
6.1.2 元件單元
元件單元只能含有一個(gè)主要元件,這是指出現(xiàn)在元件選項(xiàng)板上的元件。其他輔助性的元件或?qū)ο笠部梢园谕粏卧小?br>6.1.3 注冊單元
元件的注冊過程應(yīng)當(dāng)從元件單元中移走,放在一個(gè)單獨(dú)的單元中。這個(gè)注冊單元用于注冊所有元件、特性編輯器、元件編輯器、向?qū)У取?br>元件注冊應(yīng)當(dāng)在設(shè)計(jì)期包中進(jìn)行。因此,注冊單元應(yīng)當(dāng)包含在設(shè)計(jì)期包而不是運(yùn)行期包中。建議注冊單元這樣命名:
xxxReg.pas
其中,xxx為3個(gè)字符前綴,以標(biāo)識公司、個(gè)人或其他實(shí)體。例如,命名為ddgReg.Pas。
6.2 元件實(shí)例的命名規(guī)則
元件的名稱應(yīng)當(dāng)具有描述性。Delphi沒有為元件指定默認(rèn)的名稱。元件應(yīng)當(dāng)有一個(gè)小寫的前綴以表明其類型,這是為了便于在Object Inspector和Code Explorer中查找元件。
元件類型前綴是元件類型名變化而成的。下面的規(guī)則說明如何定義一個(gè)元件類型前綴:
1) 從元件類型名中移去T 前綴。例如TButton變成Button。
2) 除了第一個(gè)元音,刪去所有元音字母。例如,Button變成Bttn,Edit變成Edt 。
3) 壓縮雙字母。例如,Bttn變成Btn。
4) 如發(fā)生沖突,則在某一元件前綴中加入一個(gè)元音。例如在TBatton元件的前綴中加入元音變?yōu)閎atn,以區(qū)別TButton的前綴。
6.3 元件性質(zhì)標(biāo)識名
元件性質(zhì)標(biāo)識名是元件意圖的描述。例如,一個(gè)用于關(guān)閉窗體的TButton元件可命名為btnClose。一個(gè)編輯人名的元件可命名為edtFirstName。
6.4 元件的前綴
下面是Delphi5 標(biāo)準(zhǔn)元件的前綴。
6.4.1 standard頁
前綴 元件
mm TMainMenu
pm TPopupMenu
mmi TMainMenuItem
pmi TPopupMenuItem
fm TFrame
lbl TLabel
edt TEdit
mem TMemo
btn TButton
ck TCheckBox
rb TRadioButton
lb TListBox
cb TComboBox
scb TScrollBar
gb TGroupBox
rg TRadioGroup
pnl TPanel
al TActionList
ac TAction
6.4.2 Additional頁
前綴 元件
bbtn TBitBtn
sb TSpeedButton
me TMaskEdit
sg TStringGrid
dg TDrawGrid
img TImage
shp TShape
bvl TBevel
sbx TScrollBox
clb TCheckListBox
spl TSplitter
stx TStaticText
ctrb TControlBar
av TApplicationEvents
cht TChart
6.4.3 win32頁
前綴 元件
tbc TTabControl
pgc TPageControl
il TImageList
re TRichEdit
tbr TTrackBar
pb TProgressBar
ud TUpDown
hk THotKey
ani TAnimate
dtp TDateTimePicker
mc TMonthCalendar
tv TTreeView
lv TListView
hc THeaderControl
stb TStatusBar
tb TToolBar
clb TCoolBar
pgs TPageScroller
6.4.4 System頁
前綴 元件
tm TTimer
pb TPaintBox
mp TMediaPlayer
olec TOleContainer
ddcc TDDEClientConv
ddci TDDEClientItem
ddsc TDDEServerConv
ddsi TDDEServerItem
6.4.5 Data Access頁
前綴 元件
ds TDataSource
tbl TTable
qry TQuery
sp TStoreProce
db TDataBase
ssn TSession
bm TBatchMove
usql TUpdateSQL
nt TNestedTable
6.4.6 Data Controls頁
前綴 元件
dbg TDBGrid
dbn TDBNavigator
dbt TDBText
dbe TDBEdit
dbm TDBMemo
dbi TDBImage
dblb TDBListBox
dbcb TDBComboBox
dbck TDBCheckBox
dbrg TDBRadioGroup
dbll TDBLookupListBox
dblc TDBLookupComboBox
dbre TDBRichEdit
dbcg TDBCtrlGrid
dbch TDBChart
6.4.7 ADO頁
前綴 元件
adon TADOConnection
adoc TADOCommand
adod TADODataSet
adot TADOTable
adoq TADOQuery
ados TADOStoreProc
rdsn TRDSConnection
6.4.8 Midas頁
前綴 元件
prv TProvider
cds TClientDataSet
qcds TQueryClientDataSet
dcom TDCOMConnection
olee TOleEnterpriseConnection
sck TSocketConnection
rms TRemoteServer
mid TMidasConnection
6.4.9 Internet頁
前綴 元件
csk TClientSocket
ssk TServerSocket
wbd TWebDispatcher
pp TPageProducer
tp TQueryTableProducer
dstp TDataSetTableProducer
nmdt TNMDayTime
nec TNMEcho
nf TNMFinger
nftp TNMFtp
nhttp TNMHttp
nMsg TNMMsg
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
6.4.10 Decision Cube頁
前綴 元件
dcb TDecisionCube
dcq TDecisionQuery
dcs TDecisionSource
dcp TDecisionPivot
dcg TDecisionGrid
dcgr TDecisionGraph
6.4.11 QReport頁
前綴 元件
qr TQuickReport
qrsd TQRSubDetail
qrb TQRBand
qrcb TQRChildBand
rqg 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
6.4.12 Dialogs頁
對話框元件實(shí)際是以元件形式封裝的Form,因此它遵循Form的命名規(guī)則。其類型經(jīng)由元件的名稱定義了。實(shí)例的名稱與類型的名稱相同,但沒有前綴T。
前綴 元件
OpenDialog TOpenDialog
SaveDialog TSaveDialog
OpenPicturedialog TOpenPictureDialog
SavePictureDialog TSavePictureDialog
FonDialog TFontDialog
ColorDialog TColorDialog
PrintDialog TPrintDialog
PrintSetupDialog TPrinterSetupDialog
FindDialog TFindDialog
ReplaceDialog TReplaceDialog
6.4.13 Win31頁
前綴 元件
dbll TDBLookupList
dblc TDBLookupCombo
ts TTabSet
ol TOutline
tnb TTabbedNoteBook
nb TNoteBook
hdr THeader
flb TFileListBox
dlb TDirectoryListBox
dcb TDirveComboBox
fcb TfilterComboBox
6.4.14 Samples頁
前綴 元件
gg TGauge
cg TColorGrid
spb TSpinButton
spe TSpinEdit
dol TDirectoryOutline
cal TCalendear
ibea TIBEventAlerter
6.4.15 ActiveX頁
前綴 元件
cfx TChartFx
vsp TVSSpell
flb TF1Book
vtc TVTChart
 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi 程序員代碼編寫標(biāo)準(zhǔn)指南
代碼書寫規(guī)范
delphi代碼標(biāo)準(zhǔn)文檔
VB命名規(guī)則及代碼規(guī)范
編程入門網(wǎng)-VB編程的七個(gè)優(yōu)良習(xí)慣
讀書日志:代碼大全之第九章
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服