亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi源程序格式書寫規范

2019-11-18 18:43:32
字體:
來源:轉載
供稿:網友

1.規范簡介
本規范主要規定Delphi源程序在書寫過程中所應遵循的規則及注意事項。編寫該規范的目的是使公司軟件開發人員的源代碼書寫習慣保持一致。這樣做可以使每一個組員都可以理解其它組員的代碼,以便于源代碼的二次開發記憶系統的維護。
2.一般格式規范
2.1縮進
縮進就是在當源程序的級改變時為增加可讀性而露出的兩個空格。縮進的規則為每一級縮進兩個空格。不準許使用Tab。因為Tab會因為用戶所作的設置不同而產生不同的效果。當遇到begin 或進入判斷、循環、異常處理、with語句、記錄類型聲明、類聲明等的時侯增加一級, 當遇到end或退出判斷、循環、異常處理、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語法書寫格式規范
3.1保留字
Object Pascal 語言的保留字或關鍵詞應全部使用小寫字母。
3.2過程和函數
3.2.1命名及格式
過程和函數的名稱應全部使用有意義的單詞組成,并且所有單詞的第一個字母應該使用大寫字母。例如:
procedure formatharddisk;//不正確的命名
procedure FormatHardDisk;//正確的命名
設置變量內容的過程和函數,應使用Set作為前綴,例如:
procedure SetUserName;
讀取變量內容的過程和函數,應使用Get作為前綴,例如:
function GetUserName: string;
3.2.2 過程和函數的參數
3.2.2.1命名
統一類型的參數寫在同一句中:
procedure Foo(Param1, Param2, Param3: Integer; Param4: string);
3.2.2.2命名
所有參數必須是有意義的;并且當參數名稱和其它屬性名稱重了的時候,加一個前綴‘A’, 例如:
procedure SomeProc(AUserName: string; AUserAge: integer);
3.2.2.3命名沖突
當使用的兩個unit中包括一個重名的函數或過程時, 那幺當你引用這一函數或過程時,將執行在use 子句中后聲明的那個unit中的函數或過程。為了避免這種‘uses-clause-dependent’需要在引用函數或過程時,寫完整函數或過程的出處。例如:
SysUtils.FindClose(SR);
Windows.FindClose(Handle);
3.3 變量
3.3.1 變量命名及格式
首先所有變量必須起有意義的名字,使其它組員可以很容易讀懂變量所代表的意義,變量命名可以采用同義的英文命名,可使用幾個英文單詞,但每一單詞的首字母必須大寫。例如:
var
  WriteFormat::string;
同時對于一些特定類型可采用一定的簡寫如下:
指針類型
 P
 
紀錄類型
 Rec
 
數組類型
 Arr
 

 Class
 
循環控制變量通常使用單一的字符如:i, j, 或 k。 另外使用一個有意義的名字例如:UserIndex ,也是準許的。
3.3.2 局部變量
在過程中使用局部變量遵循所有其它變量的命名規則。
3.3.3 全局變量
盡量不使用全局變量,如必須使用全局變量則必須加前綴‘g’,同時應在變量名稱中體現變量的類型。例如:
  gprecUserCount: point;//名稱為UserCount的全局變量,其類型為指向一結構的指針
但是在模塊內部可以使用全局變量。所有模塊內全局變量必須用‘F’為前綴。如果幾個模塊之間需要進行資料交換,則需要通過聲明屬性的方法來實現。例如:
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 大小寫協議
保留字的類型名稱必須全部小寫。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 類型是對處理器和數據總線做過最優化的并且是IEEE定義的標準數據結構。當數值超出Double的范圍時,使用Extended 。但Extended不被Jave支持。但使用其它語言編寫的DLL時可能會使用Single 類型。
3.4.3 枚舉類型
枚舉類型的名字必須有意義并且類型的名字之前要加前綴‘T’。枚舉類型的內容的名字必須包含枚舉類型名稱的簡寫,例如:
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
3.4.4 數組類型
數組類型的名字必須有意義并且類型的名字之前要加前綴‘T’。如果聲明一個指向數組類型的指針必須在該類型的名字之前加前綴‘P’,例如:
type
  PCycleArray = ^TCycleArray;
  TCycleArray = array[1..100] of integer;
3.4.5記錄類型
記錄類型的名字必須有意義并且類型的名字之前要加前綴‘T’。如果聲明一個指向數組類型的指針必須在該類型的名字之前加前綴‘P’,例如:
type
  PEmployee = ^TEmployee;
  TEmployee = record
    EmployeeName: string
    EmployeeRate: Double;
  end;
3.5類
3.5.1 命名及格式
類的名字必須有意義并且類型的名字之前要加前綴‘T’。例如:
type
  TCustomer = class(TObject)
類實例的名字通常是去掉‘T’的類的名字。例如:
var
  Customer: TCustomer;
3.5.2 類中的變量
3.5.2.1命名及格式
類的名字必須有意義并且類型的名字之前要加前綴‘F’。所有的變量必須是四有的。如果需要從外部訪問此變量則需要聲明一屬性
3.5.3 方法
3.5.3.1命名及格式
同函數和過程的命名及格式。
3.5.3.2 屬性訪問方法
所有的屬性訪問方法必須出現在private 或 protected 中。屬性訪問方法的命名同函數和過程的命名另外讀方法(reader method)必須使用前綴‘Get’. 寫方法(writer method)必須使用前綴‘Set’。寫方法的參數必須命名為‘Value’,其類型同所要寫的屬性相一致。例如:
TSomeClass = class(TObject)
private
  fsomeField: Integer;
protected
  function GetSomeField: Integer;
  procedure SetSomeField( Value: Integer);
public
  property SomeField: Integer read GetSomeField write SetSomeField;
end;
3.6屬性
3.6.1 命名及格式
同其用操作的,出去前綴‘F’的類的變量的名稱相一致 。
3.7文件
3.7.1項目文件
3.7.1.1項目目錄結構
程序主目錄--Bin(應用程序所在路徑)
                           -Db(本地數據庫所在路徑)
                          -Doc(文檔所在路徑)
                    -Hlp(幫助文件所在路徑)
                           -Backup(備份路徑)
                           -Tmp(臨時文件路徑)
3.7.1.2命名
項目文件必須使用一個有意義的名字。例如: Delphi中系統信息的項目文件被命名為 SysInfo.dpr。
3.7.2 Form 文件
3.7.2.1命名
同Form的名稱相一致:例如:Form的名稱為FormMain則Form文件的名稱就為FormMain.frm。
3.7.3 Data Module 文件
3.7.3.1命名
data module文件的命名應該有意義,并且使用‘DM’作為前綴。例如: 用戶data module 被命名為‘DMCustomers.dfm’。
3.7.4 Remote Data Module 文件
3.7.4.1 命名
remote data module文件的命名應該有意義,并且使用‘RDM’作為前綴。例如:用戶remote data module 被命名為‘RDMCustomers.dfm’。
3.7.5 Unit文件
3.7.5.1普通 Unit
3.7.5.1.1 Unit文件命名
unit文件的命名應該有意義,并且使用‘unit’作為前綴。例如: 通用unit 被命名為‘UnitGeneral’。
3.7.5.2 Form Units
3.7.5.2.1命名
Form unit 文件的名字必須和Form的名稱保持一致。例如:主窗體叫FormMain.pas 則Form Unit文件的名字為:UnitFormMain。
3.7.5.3 Data Module Units
3.7.5.3.1命名
Data Module unit 文件的名字必須和Data Module的名稱保持一致。例如:主Data Module叫DMMain.pas 則Data Module Unit文件的名字為:UnitDMMain。
3.7.5.4 文件頭
在所有文件的頭部應寫上此文件的用途,作者,日期及輸入和輸出。例如:
{
修改日期:
作者:
用途:
本模塊結構組成:
}
3.7.6 Forms和Data Modules Forms
3.7.6.1 Form類
1. Form類命名標準
Forms類的命名應該有意義,并且使用‘TForm’作為前綴。例如: About Form類的名字為:
TAboutForm = class(TForm)
主窗體的名字為
TMainForm = class(TForm)
2. Form類實例的命名標準
Form 的類實例的名字應同期掉‘T’的Form類的名字相一致。例如:
Type Name
 Instance Name
 
TaboutForm
 AboutForm
 
TmainForm
 MainForm
 
TCustomerEntryForm
 CustomerEntryForm
 
 
3.7.6.2 Data Modules Form
3.7.6.2.1. Data Module Form 命名標準
Data Modules Forms類的命名應該有意義,并且使用‘TDM’作為前綴。例如:
TDMCustomer = class(TDataModule)
TDMOrders = class(TDataModule)
3.7.6.2.2. Data Module 實例命名標準
Data Module Form 的類實例的名字應同期掉‘T’的Data Module Form類的名字相一致。例如:
Type Name
 Instance Name
 
TCustomerDataModule
 CustomerDataModule
 
TordersDataModule
 OrdersDataModule
 
3.8控件
3.8.1 控件實例的命名
控件的實例應使用去掉‘T’該控件類的名稱作為前綴,例如:
輸入用戶姓名的Tedit的名字為:EditUserName。
3.8.2 控件的簡寫
控件的名稱可使用以下簡寫,但所用簡寫于控件名稱之間藥添加‘_’:
3.8.2.1 Standard Tab
mm TMainMenu
pm TPopupMenu
mmi TMainMenuItem
pmi TPopupMenuItem
lbl TLabel
edt TEdit
mem TMemo
btn TButton
cb TCheckBox
rb TRadioButton
lb TListBox
cb TComboBox
scb TScrollBar
gb TGroupBox
rg TRadioGroup
pnl TPanel
cl TCommandList
3.8.2.2 Additional Tab
bbtn TBitBtn
sb TSpeedButton
me TMaskEdit
sg TStringGrid
dg TDrawGrid
img TImage
shp TShape
bvl TBevel
sbx TScrollBox
clb TCheckListbox
spl TSplitter
stx TStaticText
cht TChart
3.8.2.3 Win32 Tab
tbc TTabControl
pgc TPageControl
il TImageList
re TRichEdit
tbr TTrackBar
prb TProgressBar
ud TUpDown
hk THotKey
ani TAnimate
dtp TDateTimePicker
tv TTreeView
lv TListView
hdr THeaderControl
stb TStatusBar
tlb TToolBar
clb TCoolBar
3.8.2.4 System Tab
tm TTimer
pb TPaintBox
mp TMediaPlayer
olec TOleContainer
ddcc TDDEClientConv
ddci TDDEClientItem
ddsc TDDEServerConv
ddsi TDDEServerItem
3.8.2.5 Internet Tab
csk TClientSocket
ssk TServerSocket
wbd TWebDispatcher
pp TPageProducer
tp TQueryTableProducer
dstp TDataSetTableProducer
nmdt TNMDayTime
nec TNMEcho
nf TNMFinger
nftp TNMFtp
nhttp TNMHttp
nMsg TNMMsg
nmsg TNMMSGServ
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
3.8.2.6 Data access Tab
ds TDataSource
tbl TTable
qry TQuery
sp TStoredProc
db TDataBase
ssn Tsession
bm TBatchMove
usql TUpdateSQL
3.8.2.7 Data Controls Tab
dbg TDBGrid
dbn TDBNavigator
dbt TDBText
dbe TDBEdit
dbm TDBMemo
dbi TDBImage
dblb TDBListBox
dbcb TDBComboBox
dbch TDBCheckBox
dbrg TDBRadioGroup
dbll TDBLookupListBox
dblc TDBLookupComboBox
dbre TDBRichEdit
dbcg TDBCtrlGrid
dbch TDBChart
3.8.2.8 Decision Cube Tab
dcb TDecisionCube
dcq TDecisionQuery
dcs TDecisionSource
dcp TDecisionPivot
dcg TDecisionGrid
dcgr TDecisionGraph
3.8.2.9 QReport Tab
qr TQuickReport
qrsd TQRSubDetail
qrb TQRBand
qrcb TQRChildBand
qrg 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
3.8.2.10 Dialogs Tab
OpenDialog TOpenDialog
SaveDialog TSaveDialog
OpenPictureDialog TOpenPictureDialog
SavePictureDialog TSavePictureDialog
FontDialog TFontDialog
ColorDialog TColorDialog
PrintDialog TPrintDialog
PrinterSetupDialog TPrintSetupDialog
FindDialog TFindDialog
ReplaceDialog TReplaceDialog
3.8.2.11 Win31 Tab
dbll TDBLookupList
dblc TDBLookupCombo
ts TTabSet
ol TOutline
tnb TTabbedNoteBook
nb TNoteBook
hdr THeader
flb TFileListBox
dlb TDirectoryListBox
dcb TDriveComboBox
fcb TFilterComboBox
3.8.2.12 Samples Tab
gg TGauge
cg TColorGrid
spb TSpinButton
spe TSpinEdit
dol TDirectoryOutline
cal TCalendar
ibea TIBEventAlerter
3.8.2.13 ActiveX Tab
cfx TChartFX
vsp TVSSpell
f1b TF1Book
vtc TVTChart
grp TGraph
3.8.2.14 Midas Tab
prv TProvider
cds TClientDataSet
qcds TQueryClientDataSet
dcom TDCOMConnection
olee TOleEnterpriseConnection
sck TSocketConnection
rms TRemoteServer
mid TmidasConnection
4.修改規范
       本規則所做的規定僅適用于已經納入配置管理的程序。在這類修改中,要求保留修改前的內容、并標識出修改和新增的內容。并在文件頭加入修改人、修改日期、修改說明等必要的信息。
4.1修改歷史記錄
       對源文件進行經過批準的修改時,修改者應在程序文件頭加入修改歷史項。在以后的每一次修改時,修改者都必須在該項目中填寫下列信息:
       修改人
       修改時間
       修改原因
       修改說明即如何修改
4.2新增代碼行
       新增代碼行的前后應有注釋行說明。
       // 修改人,修改時間,修改說明
       新增代碼行
       // 修改結束
4.3刪除代碼行
       刪除代碼行的前后用注釋行說明。
       //修改人,修改時間,修改說明
              //要刪除的代碼行(將要刪除的語句進行注釋)
       //修改結束
4.4修改代碼行
       修改代碼行以刪除代碼行后在新增代碼行的方式進行。
       //修改人,修改時間,修改說明
              //修改前的代碼行
//修改結束
       //修改后的代碼行
              修改后的代碼行
//修改結束


上一篇:Delphi控件的拿來主義(三)

下一篇:於Delphi的Case述句中使用字串當作判別變數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久免费国产精品1| 日韩精品在线观看视频| 韩国精品美女www爽爽爽视频| 日韩电影中文字幕一区| 97在线视频一区| 精品视频在线播放色网色视频| 亚洲深夜福利视频| 伊人精品在线观看| 欧美黄色三级网站| 国产在线日韩在线| 精品久久久国产| 亚洲国产欧美一区| 日韩不卡在线观看| 亚洲国产精品字幕| 亚洲国产女人aaa毛片在线| 97精品久久久中文字幕免费| 亚洲一区中文字幕在线观看| 色与欲影视天天看综合网| 2018国产精品视频| 欧美性猛交99久久久久99按摩| 亚洲精品久久久一区二区三区| 国产美女高潮久久白浆| 久久91精品国产| 午夜精品久久久99热福利| 91国产在线精品| 亚洲在线www| 日韩电影中文字幕在线观看| 欧美大片免费观看在线观看网站推荐| 亚洲欧美精品一区二区| 一区二区在线免费视频| 国产精品欧美一区二区三区奶水| 日本一本a高清免费不卡| 91在线无精精品一区二区| 国产精品1区2区在线观看| 欧美韩国理论所午夜片917电影| www.日韩av.com| 国产欧美日韩丝袜精品一区| 95av在线视频| 成人福利网站在线观看11| 亚洲一区二区久久| 精品性高朝久久久久久久| 黄色精品一区二区| 97精品国产97久久久久久春色| 国产精品高潮呻吟久久av黑人| 国产精品99久久久久久白浆小说| 国产美女精品视频免费观看| 国产成人综合精品在线| 久久精品久久久久久| 国产精品久久久久久久午夜| 欧美三级免费观看| 黑人巨大精品欧美一区免费视频| 欧美网站在线观看| 亚洲xxx大片| 高清日韩电视剧大全免费播放在线观看| 亚洲午夜激情免费视频| 国模精品一区二区三区色天香| 国产精品流白浆视频| 精品免费在线观看| 精品久久久久久久久久国产| 一本色道久久综合狠狠躁篇怎么玩| 国产xxx69麻豆国语对白| 国产精品看片资源| 91精品视频免费看| 91视频国产高清| 欧美精品午夜视频| 欧美高清视频一区二区| 久久欧美在线电影| 91免费在线视频| 欧美国产第一页| 欧美亚洲成人免费| 亚洲va久久久噜噜噜久久天堂| 久久国产精品视频| 在线日韩日本国产亚洲| 九九热这里只有在线精品视| 久久精品亚洲94久久精品| 尤物九九久久国产精品的分类| 亚洲影院色在线观看免费| 成人免费网站在线看| 日本最新高清不卡中文字幕| 国产欧美日韩精品专区| 欧美一级黄色网| 亚洲嫩模很污视频| 成人精品一区二区三区电影免费| 国产精品精品久久久久久| 北条麻妃一区二区三区中文字幕| 91精品国产777在线观看| 91精品国产91久久久久久最新| 欧美高清电影在线看| 在线成人免费网站| 日本精品久久电影| 国产在线拍揄自揄视频不卡99| 日韩麻豆第一页| 91久久精品美女| 曰本色欧美视频在线| 国产国语刺激对白av不卡| 美女啪啪无遮挡免费久久网站| 欧美精品电影免费在线观看| 日本一欧美一欧美一亚洲视频| 欧美成人激情在线| 福利视频一区二区| 精品少妇一区二区30p| 日韩av一区二区在线观看| 在线视频欧美性高潮| 国产精品海角社区在线观看| 欧美极品美女视频网站在线观看免费| 日韩国产精品视频| 国产精品扒开腿做爽爽爽的视频| 精品免费在线观看| 亚洲精品国精品久久99热一| 69av成年福利视频| 91精品国产91久久久久久| 亚洲综合一区二区不卡| 亚洲欧洲日本专区| 爽爽爽爽爽爽爽成人免费观看| 日韩av在线免播放器| 久久综合五月天| 久久久精品中文字幕| 亚洲男人天堂九九视频| 亚洲天堂男人天堂女人天堂| 欧美日韩在线视频观看| 欧美电影免费观看| 成人激情综合网| 亚洲精品美女在线观看播放| 日韩欧美一区二区三区久久| 欧美大成色www永久网站婷| 国产精品激情av在线播放| 国产69精品久久久久99| 午夜精品视频在线| 国产日本欧美在线观看| 欧美一级高清免费| 国产欧美一区二区三区视频| 97香蕉久久超级碰碰高清版| 日韩欧美中文第一页| 久久久久久国产三级电影| 日av在线播放中文不卡| 中文字幕亚洲专区| 国产成人福利视频| 中文字幕日韩在线视频| 欧美性精品220| 伊人激情综合网| 亚洲欧美日韩国产精品| 亚洲福利视频网| 欧美影院在线播放| 九九九久久久久久| 久久精品久久精品亚洲人| 色999日韩欧美国产| 国产剧情久久久久久| 久久偷看各类女兵18女厕嘘嘘| 亚洲aⅴ男人的天堂在线观看| 中文在线资源观看视频网站免费不卡| 亚洲国产欧美一区二区三区同亚洲| 欧美亚洲成人网| 亚洲国产第一页| 国产免费一区视频观看免费| 狠狠色噜噜狠狠狠狠97| 国产精品视频999| 97色在线观看免费视频| 日韩精品视频中文在线观看| 国产精品高清在线| 欧洲成人免费视频| 亚洲色图17p| 久久久久久久久久国产精品| 国产视频精品一区二区三区| www.色综合|