Delphi代码创建形式规范

Delphi教程 2025-08-19

Delphi代码创建形式规范本规范的目的:给自己的代码一个统一而标准的外观,增强

可读性,可理解性,可维护性

本规范的原则:名称反映含义,形式反映结构

1、单元风格

2、各区风格

3、语句风格

4、命名规则

参考:Borland官方Object Pascal风格指南

Delphi5程序员指南编码标准

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;

{ forWord declairation }

TGIFImage = class;

TGIFSubImage = class;

{---------------------------

TGIFItem

---------------------------}

TGIFItem = class(TPersistent)

private

FGIFImage: TGIFImage;

.............

end;

3、变量区

定义全局变量

注意不要有缺省的类对象变量,在调用者中声明!

var

-----------: -------;

-----------: -------;

例子:

GIFDelayExp: integer = 10; { Delay multiplier in mS.}

GIFDelayExp: integer = 12;

4、实现区

{---------------------------------------------------------

主题

----------------------------------------------------------}

{ 方法的目的 }

procedure ----------------------------

begin

--------;

--------;

end;

{ 方法的目的 }

function -----------------------------

begin

--------;

--------;

end;

5、过程与函数

命名

格式 返回