本規范的目的:給自己的代碼一個統一而標準的外觀,增強
可讀性,可理解性,可維護性
本規范的原則:名稱反映含義,形式反映結構
1、單元風格
{*******************************************************}
{ }
{ 項目名稱 }
{ }
{ 版權所有 (C) 2000,2001 公司名稱 }
{ }
{*******************************************************}
unit UnitName;
{*******************************************************
項目:
模塊:
描述:
版本:
日期:
作者:
更新:
TODO:
*******************************************************}
interface
uses
----,----,----,----,----,----,----,----,----,----,----,
----,----, ----,----,----,----;
const
--------------------;
--------------------;
--------------------;
type
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
var
--------------------;
--------------------;
--------------------;
implementation
uses
----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
end.
2、各區風格
0、注釋與空白
用{ } 不用 //
主題注釋,函數過程目的說明,語句注釋
空行 :版權塊,類之間,方法之間--(兩行) 方法內部塊(一行)
空格 :用以增強清晰度
縮進 :兩個空格
1、常量區
基本:
Const
----- = ----;
----- = ----;
----- = ----;
----- = ----;
擴展
前綴: 少則C_---;多則可以每個主題有一個前綴
Const
{ 主題1 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
C_--- = ----; { 含義 }
{ 主題2 }
----- = ----;
----- = ----;
----- = ----;
----- = ----;
資源字符串,放在變量區后面
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、類型區
數據類型-->不提供服務的數據類型
T---- = ---------
對象類型-->有狀態并提供服務的實體
T---- = class(----)
PRivate
--------
--------
protected
--------
--------
public
--------
--------
published
--------
--------
end;
按字母排序
Private
1、所有數據放在Private 區,以F打頭
2、所有事件屬性對應的方法指針放在Private 區,以F打頭
3、屬性的Get與Set方法放在Private 區-->不準備被繼承
4、響應消息的方法放在Private 區
protected
1、被子類調用的但不能被外界調用的方法與屬性
2、供子類重載的方法 virsual; virsual; abstract
public
1、構建析構方法
2、供外界調用的方法
3、供外界調用的屬性
published
1、出現在Object Inspector里供設計時用的屬性
2、出現在Object Inspector里供設計時用的事件響應
例子:
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、變量區
定義全局變量
注意不要有缺省的類對象變量,在調用者中聲明!
var
-----------: -------;
-----------: -------;
例子:
GIFDelayExp: integer = 10; { Delay mult
iplier in mS.}
GIFDelayExp: integer = 12;
4、實現區
{---------------------------------------------------------
主題
----------------------------------------------------------}
{ 方法的目的 }
procedure ----------------------------
begin
--------;
--------;
end;
{ 方法的目的 }
function -----------------------------
begin
--------;
--------;
end;
5、過程與函數
命名
格式