![源代碼規(guī)范文檔_第1頁](http://file4.renrendoc.com/view/1ae8f933d08ef93127aa475b3f3d4a3d/1ae8f933d08ef93127aa475b3f3d4a3d1.gif)
![源代碼規(guī)范文檔_第2頁](http://file4.renrendoc.com/view/1ae8f933d08ef93127aa475b3f3d4a3d/1ae8f933d08ef93127aa475b3f3d4a3d2.gif)
![源代碼規(guī)范文檔_第3頁](http://file4.renrendoc.com/view/1ae8f933d08ef93127aa475b3f3d4a3d/1ae8f933d08ef93127aa475b3f3d4a3d3.gif)
![源代碼規(guī)范文檔_第4頁](http://file4.renrendoc.com/view/1ae8f933d08ef93127aa475b3f3d4a3d/1ae8f933d08ef93127aa475b3f3d4a3d4.gif)
![源代碼規(guī)范文檔_第5頁](http://file4.renrendoc.com/view/1ae8f933d08ef93127aa475b3f3d4a3d/1ae8f933d08ef93127aa475b3f3d4a3d5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
SUBJECTW.MIS項目DOCPROPERTYTitle源代碼規(guī)范版本<1.0>文件編號:W.MIS-MN-5生效日期:受控編號:密級:版本:修改狀態(tài):總頁數(shù)NUM代碼規(guī)范目的本文檔主要是為員提供一個源代碼書寫標準,以及程序和文件的命名標準,使他們在編程時有一致格式可遵循。這樣,每個編程人員編寫的代碼能夠被其他人理解。源程序書寫規(guī)范通用源代碼格式規(guī)則縮進縮進就是每級間有兩個空格。不要在源代碼中放置制表符。這是因為,制表符的寬度隨著不同的設置和代碼管理實用程序(打印、文檔及版本控制等)而不同。通過使用Tools|Environment菜單,在EnvironmentOptions對話框的General頁上,不要選中UseTabCharacter和OptionalFill復選框,這樣,制表符就不會被保存。邊距邊距設置為80個字符。源代碼一般不會因?qū)懸粋€單詞而超過邊距,但本規(guī)則比較靈活。只要可能,長度超過一行的語句應當用逗號或運算符換行。換行后,應縮進兩個字符。begin...end語句begin語句必須單獨占一行。例如,下面第一行是錯誤的,而第二行正確:fori:=0to10dobegin//錯,begin與for在同一行fori:=0to10do//對,begin在另外一行中
begin本規(guī)則的一個特殊情況是,當begin為else語句的一部分時,例如:ifsomestatement=then
begin
...
endelsebegin
SomeOtherStatement;
end;注意:end語句總單獨一行。當begin不為else語句的一部分時,相應的end語句與begin語句的縮進量相同。注釋有關注釋要求,請參閱HYPERLINK源程序文檔注釋規(guī)范。ObjectPascal語句格式語句書寫規(guī)范與用法括號在左括號與下一字符之間沒有空格。同樣,右括號與前一字符也沒有空格。下面的例子演示了正確與不正確的空格。CallProc(Aparameter);//錯!
CallProc(Aparameter);//正確!不要在語句中包含多余的括號。在源代碼中,括號只有在確實需要時才使用。下面的例子演示了正確與不正確用法:if(I=42)then//錯,括號是多余的
if(I=42)or(J=42)then//正確,必須使用括號保留字和關鍵字
ObjectPascal語言的保留字和關鍵字總是完全的小寫。下面是Delphi5保留字列表:andarrayasasmbegincaseclassconstconstructordestructordispinterfacedivdodowntoelseendexceptexportsfilefinalizationfinallyforfunctiongotoifimplementationininheritedinitializationinlineinterfaceislabellibrarymodnilnotobjectoforoutpackedprocedureprogrampropertyraiserecordrepeatresourcestringsetshlshrstringthenthreadvartotrytypeunituntilusesvarwhilewithxorprivateprotectedpublicpublishedautomated過程和函數(shù)格式過程名應當以大寫字母開始,且大小寫交錯以增加可讀性。下面是一個不正確的寫法:procedurethisisapoorlyformattedroutinename;改成這樣寫就對了:procedureThisIsMuchMoreReadableRoutineName;形參(1)格式只要可能,同一類型的形參應當歸并在一起:procedureFoo(Param1,Param2,Param3:Integer;Param4:string);(2)參數(shù)順序形參的順序主要要考慮寄存器調(diào)用規(guī)則。最常用的參數(shù)應當作為第一個參數(shù),按使用頻率依次從左到右排。輸入?yún)?shù)位于輸出參數(shù)之前。范圍大的參數(shù)應當放在范圍小的參數(shù)之前。例如:SomeProc(aPlanet,aContinent,aCountry,aState,aCity).有些則例外。例如,在事件處理過程中,TObject類型的Sender參數(shù)往往是第一個要傳遞的參數(shù)。(3)常量參數(shù)要使記錄、數(shù)組、短字符串或接口類型的參數(shù)不能被過程修改,就應當把形參標以const。這樣,編譯器將以最有效的方式生成代碼,保證傳遞的參數(shù)不可變。如果其他類型的參數(shù)希望不被過程所修改,也可以標上const。盡管這對效率沒有影響,但這給過程的調(diào)用者帶來了更多的信息。變量局部變量局部變量用于過程內(nèi)部,如果需要的話,應當在過程的入口處立即初始化變量。局部的AnsiString類型的變量自動被初始化為空字符串,局部的接口和dispinterface類型的變量自動被初始化為nil,局部的Variant和OleVariant類型的變量自動被初始化為Unassigned。全局變量一般不鼓勵使用全局變量。不過,有時候需要用到。即使如此,也應當把全局變量限制在需要的環(huán)境中。例如,一個全局變量可能只在單元的實現(xiàn)部分是全局的。全局數(shù)據(jù)如果將由許多單元使用,就應移動到一個公用單元里被所有對象使用。全局數(shù)據(jù)可在聲明時直接初始化為一個值。注意,所有全局變量自動進行零初始化,因此,不要將全局變量初始化為諸如0、nil、或Unassigned等空值。零初始化的全局變量在.EXE文件中不占空間。零初始化的數(shù)據(jù)保存在虛擬的數(shù)據(jù)段中,而虛擬數(shù)據(jù)段只在應用程序啟動時才分配內(nèi)存。非零初始化的全局數(shù)據(jù)則在.EXE文件中占空間。類型大小寫規(guī)則類型標識符是保留字,應當全部小寫。Win32API類型常常全部大寫,并且遵循諸如Windows.pas或其他API單元中關于特定類型名的規(guī)則。對于其他變量名,第一個字母應大寫,其他字母則大小寫交錯。下面是一些例子:var
MyString:string;//保留字
WindowsHandle:HWND;//Win32API類型
I:Integer;//在System單元中引入的類型標識浮點型不鼓勵使用Real類型,因為它只是為了與老的Pascal代碼兼容而保留的。通常情況下,對于浮點數(shù)應當使用Double。Double可被處理器優(yōu)化,是IEEE定義的標準的數(shù)據(jù)格式。當需要比Double提供的范圍更大時,可以使用Extend。Extend是intel專用的類型,Java不支持。當浮點變量的物理字節(jié)數(shù)很重要時(可能使用其他語言編寫DLL),則應當使用Single。Variant和OleVariant一般不建議使用Variant和OleVariant。但是,當數(shù)據(jù)類型只有在運行期才知道時(常常是在COM和數(shù)據(jù)庫應用的程序中),這兩個類型對編程就有必要。當進行諸如自動化ActiveX控件的COM編程時,應當使用OleVariant;而對于非COM編程,則應當使用Variant。這是因為,Variant能夠有效地保存Delphi的原生字符串,而OleVariant則將所有字符串轉(zhuǎn)換為OLE字符串(即WideChar字符串),且沒有引用計數(shù)功能。語句If語句在if/then/else語句中,最有可能執(zhí)行的情況應放在then子句中,不太可能的情況放在else子句中。為了避免出現(xiàn)許多if語句,可以使用case語句代替。如果多于5級,不要使用if語句。請改用更清楚的方法。不要在if語句中使用多余的括號。如果在if語句中有多個條件要測試,應按照計算的復雜程度從右向左排。這樣,可以使代碼充分利用編譯器的短路估算邏輯。例如,如果Condition1比Condition2快,Condition2比Condition3快,則if語句一般應這樣構(gòu)造:ifCondition1andCondition2andCondition3then如果Condition3為False的機會很大,利用短路估算邏輯,我們也可以將Condition3放在最前面:ifCondition3andCondition1andCondition2thencase語句(1)概述case語句中每種情況的常量應當按數(shù)字或字母的順序排列。每種情況的動作語句應當簡短且通常不超過4-5行代碼。如果動作太復雜,應將代碼單獨放在一個過程或函數(shù)中。Case語句的else子句只用于默認情況或錯誤檢測。(2)格式
case語句遵循一般的縮進和命名規(guī)則。while語句建議不要使用Exit過程來退出while循環(huán)。如果需要的話,應當使用循環(huán)條件退出循環(huán)。所有對while循環(huán)進行初始化的代碼應當位于while入口前,且不要被無關的語句隔開。任何業(yè)務的輔助工作都應在循環(huán)后立即進行。for語句
如果循環(huán)次數(shù)是確定的,應當用for語句代替while語句。repeat語句
repeat語句類似于while循環(huán),且遵循同樣的規(guī)則。with語句(1)概述with語句應小心使用。要避免過度使用with語句,尤其是在with語句中使用多個對象或記錄。例如:withRecord1,Record2do這些情況很容易迷惑編程人員,且導致調(diào)試困難。(2)格式
with語句也遵循本章關于命名和縮進的規(guī)則。結(jié)構(gòu)化異常處理概述異常處理主要用于糾正錯誤和保護資源。這意味著,凡是分配資源的地方,都必須使用try...finally來保證資源得到釋放。不過,如果是在單元的初始/結(jié)束部分或者對象的構(gòu)造器/析構(gòu)器中來分配/釋放資源則例外。try...finally的用法
在可能的情況下,每個資源分配應當與try...finally結(jié)構(gòu)匹配,例如,下面代碼可能導致錯誤:SomeClass1:=TSomeClass.Create;
SomeClass2:=TSomeClass.Create;
try
{dosomecode}
finally
SomeClass1.Free;
SomeClass2.Free;
end;
上述資源分配的一個安全方案是:SomeClass1:=TSomeClass.Create;
try
SomeClass2:=TSomeClass.Create;
try
{dosomecode}
finally
SomeClass2.Free;
end;
finally
SomeClass1.Free;
end;但有時如果有許多類都需要同時創(chuàng)建,上述方案就顯得非常累贅。這時候,我建議使用下述的一個安全方案:SomeClass1:=nil;
SomeClass2:=nil;
try
SomeClass1:=TSomeClass.Create;
SomeClass2:=TSomeClass.Create;
{dosomecode}
finally
FreeAndNil(SomeClass1);
FreeAndNil(SomeClass2);
end;try...except的用法如果你希望在發(fā)生異常時執(zhí)行一些任務,可以使用try...except。通常,沒有必要為了簡單地顯示一個錯誤信息而使用try...except,因為Application對象能夠自動根據(jù)上下文做到這一點。如果要在子句中激活默認的異常處理,可以再次觸發(fā)異常。try...except...else的用法不鼓勵使用帶else子句的try...except,因為這將阻塞所有的異常,包括你沒有準備處理的異常。命名規(guī)范過程(Procedure)與函數(shù)(Function)命名
過程與函數(shù)名應當有意義。進行一個動作的過程最好在名稱前加上表示動作的動詞為前綴。例如:procedureFormatHardDrive;
設置輸入?yún)?shù)值的過程名應當以Set為其前綴,例如:procedureSetUserName;獲取數(shù)值的過程名應當以Get為其前綴,例如:functionGetUserName:string;形參所有形參的名稱都應當表達出它的用途。如果合適的話,形參的名稱最好以字母a為前綴,例如:procedureSomeProc(aUserName:string;aUserAge:integer);
當參數(shù)名與類的特性或字段同名時,前綴a就有必要了。命名沖突當兩個單元中含有相同名稱的過程時,如果調(diào)用該過程,實際被調(diào)用的是Uses子句中較后出現(xiàn)的那個單元中的過程。為避免這種情況,可在方法名前加想要的單元名,例如:SysUtils.FindClose(SR);或Windows.FindClose(Handle);常量(Constants)和變量(Variable)常量常量的名稱應當能夠表達出它的用途。字符串資源常量(ResourceString)一般是以rs為前綴。變量變量的名稱應當能夠表達出它的用途。循環(huán)控制變量常常為單個字母,諸如I、J或K。也可以使用更有意義的名稱,例如UserIndex。布爾變量名必須能清楚表示出True和False值的意義。局部變量
局部變量遵循其他變量的命名規(guī)則。全局變量
全局變量一般以大寫字母“G”打頭,并遵循其他變量的命名規(guī)則。類型(Type)一般類型枚舉型枚舉類型名必須代表枚舉的用途。名稱前要加T字符作為前綴,表示這是個數(shù)據(jù)類型。枚舉類型的標識符列表的前綴應包含2-3個小寫字符,來彼此關聯(lián)。例如:TSongType=(stRock,stClassical,stCountry,stAlternative,stHeavyMetal,stRB);枚舉類型的變量實例的名稱與類型相同,但沒有前綴T,也可以給變量一個更加特殊名稱,諸如:FavoriteSongTypel、FavoriteSongType2等等。構(gòu)造類型數(shù)組類型數(shù)組類型名應表達出該數(shù)組的用途。類型名必須加字母“T”為前綴。如果要聲明一個指向數(shù)組類型的指針,則必須加字母P為前綴,且聲明在類型聲明之前。例如:type
PCycleArray=^TCycleArray;
TCycleArray=array[1..100]ofinteger;實際上,數(shù)組類型的變量實例與類型名稱相同,但沒有“T”前綴。記錄類型記錄類型名應表達出記錄的用途。類型名必須加字母T為前綴。如果要聲明一個指向記錄類型的指計,則必須加字母P為前綴,且其聲明在類型聲明之前。例如:type
PEmployee=^TEmployee;
TEmployee=record
EmployeeName:string;
EmployeeRate:Double;
end;類類型(Class)命名與格式類的名稱應當表達出類的用途。一般的類名前要加字母“T”,如果是接口類那么類名前要加“I”,錯誤異常類的類名前要加“E”,而類引用類型(Class-referencetype)則要在類名后加“Class”,抽象類一般是在類名前還要加“Custom”。例如:type
TCustomCipher=class(TObject);
TCipher=class(TCustomCipher);
ICipher=interface;
TCipherClass=classofTCustomer
ECipherException=class(Exception);
類的實例名稱通常與類名相同,只不過沒有前綴“T”。var
Customer:TCustomer;注意:關于元件的命名,請參閱“HYPERLINK\l"_元件類型"元件類型”。字段(1)命名與格式
字段的命名遵循與變量相同的規(guī)則,只不過要加前綴F,表示這是字段。(2)可見性
所有字段必須為私有。如果要在類的作用域之外訪問字段,可借助于類的屬性來實現(xiàn)。方法(1)命名與格式
方法的命名遵循與過程和函數(shù)相同的規(guī)則。(2)靜態(tài)方法
當你不希望一個方法被派生類覆蓋時,應當使用靜態(tài)方法。(3)虛擬方法(virtual)與動態(tài)方法(dynamic)當你希望一個方法能被派生類覆蓋,應當使用虛擬方法(virtual)。如果類的方法要被多個派生類直接或間接地使用,則應當用動態(tài)方法(dynamic)。例如,某一個類含有一個被頻繁覆蓋的方法,并有100個派生類,則應將方法定義為動態(tài)的,這樣可以減少內(nèi)存的開銷。(4)抽象方法(abstract)
如果一個類要創(chuàng)建實例,則不要使用抽象方法。抽象方法只能在那些從不創(chuàng)建實例的基類中使用。(5)屬性訪問方法所有屬性訪問方法應當定義在類的私有或保護部分。屬性訪問方法遵循與過程和函數(shù)相同的規(guī)則。用于讀的方法應當加“Get”前綴,用于寫的方法應當加“Set”前綴,并且有一個叫Value的參數(shù),其類型與屬性的類型相同。例如:TSomeClass=class(TObject)
private
FSomeField:Integer;
protected
functionGetSomeField:Integer;
procedureSetSomeField(Value:Integer);
public
propertySomeField:IntegerreadGetSomeFieldwriteSetSomeField;
end;
盡管不是必須,但還是建議你使用寫訪問方法來訪問代表私有字段屬性。屬性屬性作為私有字段的訪問器,遵循與字段相同的命名規(guī)則,只不過沒有F前綴。屬性名應為名詞,而不是動詞。屬性是數(shù)據(jù),而方法是動作。數(shù)組屬性名應當是復數(shù),而一般的屬性應當是單數(shù)。元件類型元件類型的命名標準元件的命名與類的命名類似,只不過當它與其它元件名稱沖突時,你可以加上3個字符的前綴,用以標識公司、個人或其他實體。例如,一個時鐘元件可以這樣聲明:TddgClock=class(TComponent)注意,作為前綴的3個字符要小寫。元件實例的命名規(guī)則元件實例的名稱應當能夠描述其實際意義,這里命名規(guī)則使用了一個變更的匈牙利前綴命名規(guī)范。使用前綴而不使用后綴的原因是在搜尋時,在對象檢查器和代碼探索器中搜尋構(gòu)件的名字比搜尋構(gòu)件的類型更容易。在這個標準中,元件實例名包括兩個部分:前綴和性質(zhì)標識名。(1).元件的前綴
元件的前綴多是表現(xiàn)元件類型的字母縮寫。參見下面表中的元件前綴:元件類名元件前綴TActionList,TAction表示動作的列表項actTButton,TSpeedButton,TBitBtn等所有的按鈕類btnTCheckBox,TDBCheckBox等所有的檢查框chkTRadioButton單選按鈕類rdoTToolBar工具條tbTMainMenu所有的主菜單類mmTMainMenuItem所有的菜單項類miTPopupMenu所有的彈出式菜單類pmTPopupMenuItem所有的彈出式菜單項類pmiTLabel,TStaticText等所有用來顯示的標簽類lblTPanel等所有的面板類pnlTPageControl等所有的頁式控件類pgcTEdit,TMaskEdit等所有的單行編輯框類edtTMemo,TRichEdit等所有的多行編輯框類mmoTDrawGrid,TStringGrid等所有的網(wǎng)格類grdTAnimate等所有的動畫類aniTImageList等所有的圖片列表類ilTImage等圖片類imgTChart圖表類chtTComboBox,TDBComboBox等所有的下拉式列表框類cboTListBox,TDBList等所有的列表框類lstTTreeViewtvTListViewlvTHotKeyhkTSplitter等所有的分隔符類sptTOpenDialog等所有的對話框元件類dlgTTable等所有的數(shù)據(jù)表類tblTQuery等所有的SQL查詢類元件qryTClientDataSet所有的客戶數(shù)據(jù)集元件cdsTDataSourcedsTDatabasedbTSockConnection,TDCOMConnection等連接元件類conTQuickRep,TFastReport等所有的報表元件類rptTDDEClientConv,TDDEClientItem等所有的DDE元件類ddeTMonthCalendar等所有的日歷類calTGroupBox等控件類grpTForm等窗體類frm如上所示,元件類型前綴是從分析描述元件的類型性質(zhì)而來的。通常情況下,下面的規(guī)則描述如何定義一個元件類型前綴:從元件類型名中移去T前綴。例如TButton變成Button。除了第一個元音,刪去所有元音字母。例如,Button變成bttn,Edit變成edt。壓縮雙字母。例如,bttn變成btn。如發(fā)生沖突,則在某一元件前綴中加入一個元音。例如在TBatton元件的前綴中加入元音變?yōu)閎atn,以區(qū)別TButton的前綴。不過,上述規(guī)則首先得保證前綴名稱必須符合習慣,做到見名知意,如:TDDEClientConv控件的前綴就是一個例外。注意:元件的前綴是為了表示出元件的類型,是按鈕,還是標簽等等,因此沒有必要為每一個特別元件類建立一個元件前綴,如:TMyButton的元件前綴仍為btn。常用的所有元件的前綴,會用統(tǒng)一的第三方工具定義一個配置文件發(fā)給大家。(2).元件性質(zhì)標識名元件性質(zhì)標識名是元件意圖的描述。例如,一個用于關閉窗體的TButton元件實例可命名為btnClose。一個編輯姓名的元件實例可命名為edtName。窗體與對話框類型窗體類型的命名標準窗體或?qū)υ捒蝾愋偷拿Q應當表達出窗體的用途,如果是窗體要加“Tfrm”前綴,如果是對話框要加“Tdlg”,后跟描述性名。例如,About窗體類型名稱為:TfrmAbout=class(TForm)主窗體的類型名稱為:TfrmMain=class(TForm)客戶登錄窗體的類型名稱為:TfrmCustomerEntry=class(TForm)登陸對話框的類型名稱為:TdlgLogin=class(TForm)窗體實例的命名標準窗體實例的名稱與相應的類型名稱相同,但沒有前綴T。使用前綴法命名窗體和對話框的好處在于可以在ObjectInspector(屬性觀察器)中快速找到需要的元件類型。例如,前面提到的窗體類型與實例的名稱為:類型名實例名TfrmAboutfrmAboutTfrmMainfrmMainTfrmCustomerEntryfrmCustomerEntryTdlgLogindlgLogin自動創(chuàng)建的窗體除非特別原因,只有主窗體才自動生成。其他所有窗體必須從ProjectOptions對話框的自動生成列表中刪除。更進一步信息,請參閱后面幾節(jié)。模式窗體實例化函數(shù)所有窗體單元都應當含有實例化函數(shù),用于創(chuàng)建、設置、模式顯示和釋放窗體。這個函數(shù)將返回由窗體返回的模式結(jié)果。傳遞給這個函數(shù)的參數(shù)遵循參數(shù)傳遞的規(guī)則。之所以要這樣封裝,是為了便于代碼的重用和維護。窗體的變量應當從單元中移走,改在窗體實例化函數(shù)中作為局部變量定義(注意,要求從ProjectOptions對話框的自動生成列表中移走該窗體。請看前面的內(nèi)容。例如,下面的單元文件演示了GetUserData的實例化函數(shù)。UnitUserDataFrm;InterfaceUses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls;TypeTfrmUserData=class(TForm)
edtUserName:TEdit;
edtUserID:TEdit;
private
{Privatedeclarations}
public
{Publicdeclarations}
end;functionGetUserData(varaUserName:String;varaUserID:Integer):Word;implementation{$R*.DFM}functionGetUserData(varaUserName:String;varaUserID:Integer):Word;
var
frmUserData:TfrmUserData;
begin
frmUserData:=TfrmUserData.Create(Application);
frmUserData.Caption:='GettingUserData';
Result:=frmUserData.ShowModal;
ifResult=mrOKthen
begin
aUserName:=frmUserData.edtUserName.Text;
aUserID:=StrToInt(frmUserData.edtUserID.Text);
end;
finally
frmUserData.Free;
end;
end;End.窗體框架與復合窗體如果一個窗體結(jié)構(gòu)過于復雜,就必須將其分化成為一個主窗體框架以及嵌入到主窗體框架的若干子窗體框架。如:TfrmMainFrame:TfrmInfoFrame,TfrmEditorFrame使用窗體框架,主要是為了解決界面和代碼復用問題,以及提高單元代碼的內(nèi)聚力(劃分后,每一個窗體框架為一個獨立單元),從而提高軟件工程質(zhì)量。你必須提煉出界面關聯(lián)代碼(可復用的)和應用關聯(lián)代碼(不能復用的)。數(shù)據(jù)模塊類型數(shù)據(jù)模塊的命名標準數(shù)據(jù)模塊類型名稱應表達出它的用途,且要加前綴“Tdm”,后跟描述性名稱。例如,Customer數(shù)據(jù)模塊的類型名稱為:TdmCustomer=class(TDataModule)Orders數(shù)據(jù)模塊的類型名稱為:TdmOrder=class(TDataModule)數(shù)據(jù)模塊實例的命名標準數(shù)據(jù)模塊實例的名稱應當與相應的類型名稱相同,但沒有前綴T。例如,前面的數(shù)據(jù)模塊類型、實例名稱如下:類型名稱實例名TdmCustomerdmCustomerTdmOrderdmOrder文件建議在所有源文件、項目文件和單元文件使用結(jié)構(gòu)化的文件頭信息。
詳細說明,請參閱:HYPERLINK\l"_單元文件注釋文檔格式"單元文件注釋文檔格式。項目文件項目文件的名稱應當具有描述意義。例如,“TheDelphi5Developer’sGuideBugManager”的項目名稱為DDGBugs.dpr,一個系統(tǒng)信息程序的名稱為SysInfo.dpr。窗體文件窗體文件的名稱應當表達出窗體的用途,且具有frm前綴。例如,About窗體的文件名叫frmAbout.dfm,主窗體的文件名叫frmMain.dfm。數(shù)據(jù)模塊文件數(shù)據(jù)模塊文件的名稱應當表達出數(shù)據(jù)模塊的作用,且具有DM后綴。例如,Customers數(shù)據(jù)模塊的文件名叫CustomersDM.dfm。遠程數(shù)據(jù)模塊文件遠程數(shù)據(jù)模塊文件的名稱應當表達出遠程數(shù)據(jù)模塊的用途。名稱后要加RDM后綴。例如,Customers遠程數(shù)據(jù)模塊的文件叫CustomersRDM.dfm。單元文件普通單元(1)單元名
單元的名稱應當有描述性,與窗體文件同名。例如,應用程序的主窗體單元叫frmMain.pas。(2)Uses子句Interface部分的Uses子句應當只包含該部分需要的單元。不要包含可能由Delphi自動添加的單元名。Implementation部分的Uses子句應當只包含該部分需要的單元,不要有多余的單元。(3)Interface部分Interface部分應當只包含需要被外部單元訪問的類型、變量、過程與函數(shù)的聲明。而且,這些聲明應當在Implementation部分之前。(4)Implementation部分
Implementation部分包括本單元私有的類型、變量、過程與函數(shù)的實現(xiàn)。(5)Initialization部分
不要在Initialization部分放置花費時間很多的代碼。否則,將導致應用程序啟動時顯得很慢。(6)Finalization部分
確保釋放所有在Initialization部分中分配的資源。窗體單元窗體單元文件的名稱與相應的窗體名稱相同,只是要將前綴變成后綴。例如,About窗體的單元名稱叫frmAbout。主窗體的單元文件名稱叫frmMain.pas。數(shù)據(jù)模塊單元數(shù)據(jù)模塊單元文件的名稱與相應的數(shù)據(jù)模塊名稱相同。例如,數(shù)據(jù)模塊單元的名稱叫CustomersDM.pas。通用單元通用單元是用于存放函數(shù)庫,一般類型,或常量而非元件的單元。通用單元的名稱應當表達出它的用途,名稱前要加“u”前綴。例如,一個實用調(diào)試工具單元的名稱叫uDebugUtilities.pas,包含全局變量的單元名稱叫uCustomerGlobals.pas。注意,一個項目中單元名稱必須是唯一的。通用單元名不能重名。元件單元(1).命名元件單元應放在單獨的路徑中,以表明它們是定義元件的單元。它們一般與項目不放在同一路徑下。單元文件名稱應表達出其內(nèi)容。注意,有關元件命名標準的更多信息,請參閱HYPERLINK\l"_元件類型的命名標準"“元件類型的命名標準”。元件單元只能含有一個主要元件,這是指出現(xiàn)在元件選項板上的元件。其他輔助性的元件或?qū)ο笠部梢园谕粏卧小?2).注冊單元元件的注冊過程應當從元件單元中移走,放在一個單獨的單元中。這個注冊單元用于注冊所有元件、屬性編輯器、元件編輯器、向?qū)У?。元件注冊應當在設計期包中進行。因此,注冊單元應當包含在設計期包而不是運行期包中。建議注冊單元這樣命名:其中,xxx字符前綴,以標識元件包名稱或公司、個人、其他實體。例如,注冊單元命名為xxxReg.pas。包文件(.dpk)命名規(guī)則(1).運行期包與設計期包運行期包中應當只包含所需要的單元。那些屬性編輯器和元件編輯器的單元應當放在設計期包中。注冊單元也應當放在設計期包中。(2).文件命名標準
包的命名遵循下列模式:dcliiiDescvvCn.pkg—設計期包
iiiDescvvCn.pkg
—運行期包其中,iii代表一個2-3字符的前綴,用于標識公司、個人或其他需要標識的事情,也可不要;Desc表示該控件包的簡短描述;vv代表包的版本號,你可以根據(jù)需要取舍;前綴“dcl”表示設計期包,沒有該前綴表示運行期包;字母“Cn”表示編譯器類型與編譯器版本號,如:Delphi5=D5,Delphi4=D4,CBuilder3=C3...。注意包名稱中的lib或std分別表示這是設計期包還是運行期包。例如:dclrbStdCompsD5.pkg—Delphi5的設計期包
rbStdCompsD5.pkg
—Delphi5的運行期包內(nèi)置匯編
內(nèi)置匯編也遵循本章關于命名和縮進的規(guī)則。源程序文檔注釋規(guī)范我們書寫注釋的目的主要有二:一是為自己以后閱讀源程序提供方便;二是為建立規(guī)范的程序文檔。單元文件注釋文檔格式窗體類Unit的注釋格式{*****************************************************************************文件名:版權所有:(c)2004-2005ESQUELGROUPGET/IT創(chuàng)建人:創(chuàng)建日期:修改人:修改原因:修改日期:功能描述:對應用例:2.3.1.1PPO和工藝信息字段描述:Field1字段含義Field2字段含義相關數(shù)據(jù)庫表:讀:表Job_NO為空的數(shù)據(jù)寫:(新增)(修改Job_NO字段)調(diào)用重要函數(shù)/SQL對象說明:函數(shù)1:Unitx.GetServerTime()獲取服務器時間SQL存儲過程1:接收排單任務*****************************************************************************}或是{*********************************************************************************Copyright(C)2010-2020ESQUELGROUPITDEPARTMENT**文件名:frmFFFillPpo**創(chuàng)建人:**日期:**修改人:**修改日期:**修改內(nèi)容描述:**描述:成品裝單**涉及數(shù)據(jù)表與存儲過程:數(shù)據(jù)表:FFOutFFStockPcPpoItemTraceInfo--訂單跟蹤表FFBoxupLog--修改日志表存儲過程:usp_FFGetBoxUpStock--庫存信息數(shù)據(jù)usp_FFGetBoxUpPpo--訂單信息數(shù)據(jù)usp_FFGetBoxUpPpoBox--訂單裝單信息數(shù)據(jù)usp_FFGetBoxUpInfo--
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 少先鋒隊申請書
- 吉林省中考歷史試卷和答案
- 全國導游基礎知識-導游資格全國導游基礎知識2021年真題
- 管理班級申請書
- 企業(yè)信息披露結(jié)構(gòu)與透明度提升規(guī)范
- 校資助貧困申請書
- 2024-2025學年安徽省合肥市普通高中高二上學期期末總復習測物理試卷(解析版)
- 江蘇省鹽城市2024-2025學年高二上學期學業(yè)水平合格性模擬檢測物理試題(解析版)
- 湖北省云學聯(lián)盟2024-2025學年高一上學期12月月考物理試題(解析版)
- 2024-2029年中國氫能承壓設備(氫能裝備)行業(yè)發(fā)展前景預測與投資戰(zhàn)略規(guī)劃分析報告
- 化工裝置實用操作技術指南
- 建設項目全過程工程咨詢服務指引(咨詢企業(yè)版)(征求意見稿)
- 2020年度安徽省中考數(shù)學科目試卷
- 員工培訓、考試、積分記錄表
- 風冷熱泵主機改造-模塊機匯總
- 攝影攝像技術專業(yè)申請表
- 牡丹區(qū)中心醫(yī)院食源性疾病監(jiān)測培訓課件
- 職業(yè)衛(wèi)生工程控制技術課件
- 高中英語常用詞匯表(動詞、名詞、形容詞和副詞)
- 16萬噸_年液化氣綜合利用裝置廢酸環(huán)保綜合利用項目環(huán)境報告書
- 品牌簡單之道講義
評論
0/150
提交評論