Delphi代碼創建形式規範本規範的目的:給自己的代碼一個統一而標準的外觀,增強
可讀性,可理解性,可維護性
本規範的原則:名稱反映意義,形式反映結構
1、單元風格
2、各區風格
3.語句風格
4、命名規則
參考:Borland官方Object Pascal風格指南
Delphi5程式設計人員指南編碼標準
{ }
{ 項目名稱}
{ }
{ 版權所有(C) 2000,2001 公司名稱}
{ }
{************************************************* ******}
unit UnitName;
{************************************************* ******
專案:
模組:
描述:
版本:
日期:
作者:
更新:
TODO:
************************************************** *****}
interface
uses
----,----,----,----,----,----,----,----,----,----, ----,
----,----, ----,----,----,----;
const
--------------------;
--------------------;
--------------------;
type
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
--------------------;
var
--------------------;
--------------------;
--------------------;
implementation
uses
----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
end.返回
主題註釋,函數過程目的說明,語句註釋
空白行:版權區塊,類別之間,方法之間--(兩行) 方法內部區塊(一行)
空格:用以增強清晰度
縮排:兩個空格
----- = ----;
----- = ----;
----- = ----;
----- = ----;擴展
前綴: 少則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');
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;
{ forWord declairation }
TGIFImage = class;
TGIFSubImage = class;
{---------------------------
TGIFItem
---------------------------}
TGIFItem = class(TPersistent)
private
FGIFImage: TGIFImage;
.............
end;
注意不要有缺省的類別物件變量,在呼叫者中聲明!
var
-----------: -------;
-----------: -------;
例子:
GIFDelayExp: integer = 10; { Delay multiplier in mS.}
GIFDelayExp: integer = 12;
主題
-------------------------------------------------- --------}
{ 方法的目的}
procedure ----------------------------
begin
--------;
--------;
end;
{ 方法的目的}
function -----------------------------
begin
--------;
--------;
end;
格式返回