Delphi代碼創(chuàng)建形式規(guī)范
本規(guī)范的目的:給自己的代碼一個(gè)統(tǒng)一而標(biāo)準(zhǔn)的外觀,增強(qiáng)
可讀性,可理解性,可維護(hù)性
本規(guī)范的原則:名稱反映含義,形式反映結(jié)構(gòu)
1、單元風(fēng)格
{*******************************************************}
{ }
{ 項(xiàng)目名稱 }
{ }
{ 版權(quán)所有 (C) 2000,2001 公司名稱 }
{ }
{*******************************************************}
unit UnitName;
{*******************************************************
項(xiàng)目:
模塊:
描述:
版本:
日期:
作者:
更新:
TODO:
*******************************************************}
interface
uses
----,----,----,----,----,----,----,----,----,----,----,
----,----, ----,----,----,----;
const
--------------------;
--------------------;
--------------------;
type
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
var
--------------------;
--------------------;
--------------------;
implementation
uses
----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
end.
2、各區(qū)風(fēng)格
0、注釋與空白
用{ } 不用 //
主題注釋,函數(shù)過程目的說明,語句注釋
空行 :版權(quán)塊,類之間,方法之間--(兩行) 方法內(nèi)部塊(一行)
空格 :用以增強(qiáng)清晰度
縮進(jìn) :兩個(gè)空格
1、常量區(qū)
基本:
Const
----- = ----;
----- = ----;
----- = ----;
----- = ----;
擴(kuò)展
前綴: 少則C_---;多則可以每個(gè)主題有一個(gè)前綴
Const
{ 主題1 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
{ 主題2 }
----- = ----;
----- = ----;
----- = ----;
----- = ----;
資源字符串,放在變量區(qū)后面
resourcestring
const
S_--- = '----';
S_--- = '----';
S_--- = '----';
例子:
CM_BASE = $B000;
CM_ACTIVATE = CM_BASE + 0;
CM_DEACTIVATE = CM_BASE + 1;
CM_GOTFOCUS = CM_BASE + 2;
CM_LOSTFOCUS = CM_BASE + 3;
NumPaletteEntries = 20;
BoxPoints : array[0..5, 0..2] of GLfloat =
( (-1, 0, 0),
( 0, 1, 0),
( 1, 0, 0),
( 0, -1, 0),
( 0, 0, 1),
( 0, 0, -1) );
{ Variant type codes (wtypes.h) }
varEmpty = $0000; { vt_empty }
varNull = $0001; { vt_null }
varSmallint = $0002; { vt_i2 }
GIFVersions : array[gv87a..gv89a] of TGIFVersionRec = ('87a', '89a');
2、類型區(qū)
數(shù)據(jù)類型-->不提供服務(wù)的數(shù)據(jù)類型
T---- = ---------
對象類型-->有狀態(tài)并提供服務(wù)的實(shí)體
T---- = class(----)
PRivate
--------
--------
protected
--------
--------
public
--------
--------
published
--------
--------
end;
按字母排序
Private
1、所有數(shù)據(jù)放在Private 區(qū),以F打頭
2、所有事件屬性對應(yīng)的方法指針放在Private 區(qū),以F打頭
3、屬性的Get與Set方法放在Private 區(qū)-->不準(zhǔn)備被繼承
4、響應(yīng)消息的方法放在Private 區(qū)
protected
1、被子類調(diào)用的但不能被外界調(diào)用的方法與屬性
2、供子類重載的方法 virsual; virsual; abstract
public
1、構(gòu)建析構(gòu)方法
2、供外界調(diào)用的方法
3、供外界調(diào)用的屬性
published
1、出現(xiàn)在Object Inspector里供設(shè)計(jì)時(shí)用的屬性
2、出現(xiàn)在Object Inspector里供設(shè)計(jì)時(shí)用的事件響應(yīng)
例子:
TGIFVersion = (gvUnknown, gv87a, gv89a);
TGIFVersionRec = array[0..2] of char;
PInterfaceTable = ^TInterfaceTable;
TInterfaceTable = packed record
EntryCount: Integer;
Entries: array[0..9999] of TInterfaceEntry;
{ for
Word declairation }
TGIFImage = class;
TGIFSubImage = class;
{---------------------------
TGIFItem
---------------------------}
TGIFItem = class(TPersistent)
private
FGIFImage: TGIFImage;
.............
end;
3、變量區(qū)
定義全局變量
注意不要有缺省的類對象變量,在調(diào)用者中聲明!
var
-----------: -------;
-----------: -------;
例子:
GIFDelayExp: integer = 10; { Delay mult
iplier in mS.}
GIFDelayExp: integer = 12;
4、實(shí)現(xiàn)區(qū)
{---------------------------------------------------------
主題
----------------------------------------------------------}
{ 方法的目的 }
procedure ----------------------------
begin
--------;
--------;
end;
{ 方法的目的 }
function -----------------------------
begin
--------;
--------;
end;
5、過程與函數(shù)
命名
格式