Delphi代码创建形式规范 1.0
Delphi代码创建形式规范 1.0
本规范的目的:给自己的代码一个统一而标准的外观,增强
可读性,可理解性,可维护性
本规范的原则:名称反映含义,形式反映结构
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、过程与函数
命名
格式
返回
3、语句风格
1、简单语句
-------;
2、复合语句
begin
-----;
-----;
end;
3、赋值语句
-- := -------;
-- := (-- + --)* (-- / --);
4、局部变量
var
---: ---;
---: ---;
对于逻辑上并列的变量组:
var
---,
---,
---: ---;
5、数组声明
--- = array [*..*] of ---;
6、if 语句
if (--------) then
-------------;
if (--------) then
begin
-------------;
-------------;
-------------;
end;
if (--------) then
-------------;
else
-------------;
if (--------) then
begin
-------------;
-------------;
-------------;
end else
-------------;
if (--------) then
begin
-------------;
-------------;
-------------;
end else
begin
-------------;
-------------;
-------------;
end;
if (--------) then
-------------
else if (--------) then
-------------;
7、for 循环
for I := -------- to -------- do
-------------;
for I := -------- to -------- do
begin
-------------;
-------------;
-------------;
end;
for I := -------- to -------- do
if (--------) then
begin
-------------;
-------------;
-------------;
end;
for I := -------- to -------- do
with -------- then
begin
-------------;
-------------;
-------------;
end;
8、while 循环
while ------ do
begin
-------------;
-------------;
-------------;
end;
9、repeat 循环
repeat
-------------;
-------------;
-------------;
until ------;
10、case 语句
case -------- of
-------- : -------------;
-------- : -------------;
-------- : -------------;
else -------------;
end;
case -------- of
-------- :
-----------------------------------------------------------------;
-------- :
-----------------------------------------------------------------;
-------- :
-----------------------------------------------------------------;
else
-----------------------------------------------------------------;
end;
case -------- of
-------- : begin
--------------------------;
--------------------------;
--------------------------;
end;
-------- : begin
--------------------------;
--------------------------;
--------------------------;
end;
-------- : begin
--------------------------;
--------------------------;
--------------------------;
end
else begin
-------------;
-------------;
-------------;
end;
end;
11、with 语句
with -------- do
-------------;
with -------- do
begin
-------------;
-------------;
-------------;
end;
12、try 语句
try
-------------;
-------------;
-------------;
finally
-------------;
-------------;
-------------;
end;
try
try
-------------;
-------------;
-------------;
except
-------------;
-------------;
end;
finally
-------------;
-------------;
-------------;
end;
13、其它
运算:运算符前后要有空格
w1[n] := ((i + 1) * v0[n] + j * v1[n] + (k - 1) * v2[n]) /
depth;
-- = --
-- >= --
-- <= --
-- > --
-- < --
-- <> --
-- := --; 赋值
--: ----; 类型
同一类型且含义逻辑上不并列的变量 20个字符长的变量名
private
------- : -------;
------- : -------;
------- : -------;
------- : -------;
------- : -------;
var
------- : -------;
------- : -------;
------- : -------;
------- : -------;
------- : -------;
function ---------------------(--: ----; --: ----; --: ----):
----;
同一类型且含义逻辑上并列的变量 如 Error0,Error1,Error2 ; R,G,B
private
------- ,
------- ,
------- ,
------- ,
------- : -------
var
------- ,
------- ,
------- ,
------- ,
------- : -------
function ---------------------(--, --, --: ----; var --, --,
--: ----): ----;
T------- = class(-------)
private
F-------: -------;
F-------: -------;
F-------: -------;
function --------------: -------;
procedure --------------;
protected
function --------------: -------;
procedure --------------;
function --------------: -------; virtual; abstract;
public
constructor Create(-------: -------); override; {if need to
do something after Create}
destructor Destroy; override; {if need to do something before
Destroy}
function --------------: -------;
procedure --------------;
property -------: ------- read F-------;
published
end;
14、形式反映结构
例子:
TetIndex : array[0..3] of TInteger3v =
( (0, 1, 3),
(2, 1, 0),
(3, 2, 0),
(1, 2, 3) );
Cursors: array[0..4] of TIdentMapEntry = (
(Value: crDefault; Name: 'crDefault'),
(Value: crArrow; Name: 'crArrow'),
(Value: crCross; Name: 'crCross'),
(Value: crIBeam; Name: 'crIBeam') );
if (dwFlags and PFD_DRAW_TO_WINDOW) = 0)
or( (dwFlags and PFD_SUPPORT_OPENGL) = 0)
or( (dwFlags and PFD_DOUBLEBUFFER) = 0)
or (iPixelType <> PFD_TYPE_RGBA)
or (cColorBits < 16)
)
) then
raise Exception.Create('Inappropriate Pixel Format chosen.');
glBegin(shadeType);
glNormal3fv(@n0);
glVertex3fv(@dodec[a, 0]);
glVertex3fv(@dodec[b, 0]);
glVertex3fv(@dodec[c, 0]);
glVertex3fv(@dodec[d, 0]);
glVertex3fv(@dodec[e, 0]);
glEnd();
dodec[0, 0] := -alpha; dodec[0, 1] := 0; dodec[0, 2] := beta;
dodec[1, 0] := alpha; dodec[1, 1] := 0; dodec[1, 2] := beta;
dodec[2, 0] := -1; dodec[2, 1] := -1; dodec[2, 2] := -1;
procedure glutWireTorus(
innerRadius : GLdouble; //---------
outerRadius : GLdouble; //---------
nsides : GLint; //---------
rings : GLint ); //---------
case FRunDirection of
rdRightToLeft : begin
StY:=CnY;
StX:=Width - CurrentStep;
end;
rdLeftToRight : begin
StY:=CnY;
StX:=-CurrentStep;
end;
rdBottomToTop : begin
StX:=CnX;
StY:=Height - CurrentStep;
end;
rdTopToBottom : begin
StX:=CnX;
StY:=CurrentStep - RTHeight;
end;
else begin
StX:=CnX;
StY:=CnY;
end;
end;
case (DitherMode) of
dmNearest:
Ditherer := TDitherEngine.Create(Bitmap.Width,
ColorLookup);
dmFloydSteinberg:
Ditherer := TFloydSteinbergDitherer.Create(Bitmap.Width,
ColorLookup);
dmStucki:
Ditherer := TStuckiDitherer.Create(Bitmap.Width,
ColorLookup);
dmSierra:
Ditherer := TSierraDitherer.Create(Bitmap.Width,
ColorLookup);
dmJaJuNI:
Ditherer := TJaJuNIDitherer.Create(Bitmap.Width,
ColorLookup);
dmSteveArche:
Ditherer := TSteveArcheDitherer.Create(Bitmap.Width,
ColorLookup);
dmBurkes:
Ditherer := TBurkesDitherer.Create(Bitmap.Width,
ColorLookup);
else
exit;
end;
返回
4、命名规则
1、文件名称: u模块名称;见名知意
2、控件名称: 功能_控件缩写;见名知意
3、变量 : 尽量不用缩写,尽量用名词;见名知意
4、方法与过程:尽量不用缩写,尽量用动宾词组;见名知意
5、常见的惯例
类名以T打头 (Type之意)
类的私有数据域以F打头(Field之意)
对数据的存取操作分别以Set,Get打头
事件属性以On打头
Delphi代码创建形式规范 1.0的更多相关文章
- Python代码项目目录规范v1.0
程序目录规范:bin # 存放可执行程序 xxxx.py # 程序主程序(入口文件)config # 存放配置信息 settings.py # 全局配置文件(可能暂时未应用)db # 存放数据文件 c ...
- Java线程创建形式 Thread构造详解 多线程中篇(五)
Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...
- rtmp规范1.0全面指南
RTMP(real time messaging protocol)协议 本文为Adobe rtmp规范1.0的中文介绍,其中内容大部分都是翻译自rtmp官方文档rtmp_specification_ ...
- 拿什么拯救你,我的代码--c#编码规范实战篇
此文为译文,原文地址请点击. 本文通过重构一个垃圾代码,阐述了如何写出优秀的代码.开发人员及代码审核人员需按照此规范开发和审核代码.此规范以C#为例,JAVA的童鞋一并参考,C++的童鞋自行脑补吧. ...
- 拿什么拯救你,我的代码--c#编码规范实战篇 (转)
http://www.cnblogs.com/lazio10000/p/5413439.html 此文为译文,原文地址请点击. 本文通过重构一个垃圾代码,阐述了如何写出优秀的代码.开发人员及代码审核人 ...
- Delphi插件创建、调试与使用应用程序扩展
Delphi插件创建.调试与使用应用程序扩展 翻译 : MiracleZ 有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉.对外行人来说,插件仅仅是从外部提供给应用程 ...
- Mininet python代码创建拓扑、交互式界面创建主机、交换机
python代码创建拓扑: from mininet.net importMininet net =Mininet() # Creating nodes in the network. c ...
- 一.OC基础之:1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问
1,OC语言的前世今生 , 一, 在20世纪80年代早期,布莱德.麦克(Brad Cox)设计了OC语言,它在C语言的基础上增加了一层,这意味着对C进行了扩展,从而创造出一门新的程序设计语言,支持对象 ...
- 【Android】纯代码创建页面布局(含异步加载图片)
开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...
随机推荐
- memset函数及其用法,C语言memset函数详解
在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”. 每种类型的变量都有各自的 ...
- [转]sourceforge文件下载过慢
sourceforge文件下载过慢,可以用下面网址镜像下载, 通过 下载Sourceforge等国内无法下载站点文件的另一种方法博文,好像主站点是 https://www.mirrorservice. ...
- ReadWriteLock 如何使用?
QReadWriteLock从名字看就知道是读写锁的意思.和QMutex一样,QReadWriteLock也是线程同步的一种工具.那么它有什么用呢?和QMutex又有什么区别呢?写个例子瞧一瞧. 特点 ...
- 阿里云POLARDB如何帮助百胜软件应对数据库的“巅峰时刻”
POLARDB是阿里云自研的下一代关系型云数据库,100%兼容MySQL,存储容量最高可达100TB,性能最高提升至MySQL的6倍,适用于企业多样化的数据库应用场景.POLARDB采用存储和计算分离 ...
- 获取ThinkPHP
获取ThinkPHP的方式很多,官方网站(http://thinkphp.cn)是最好的下载和文档获取来源. 官网提供了稳定版本的下载:http://thinkphp.cn/down/framewor ...
- 模拟+算贡献——cf1195D
比赛的时候没看到模数,用java大数在写,最后看到的时候已经慌了.. 把贡献算清楚就可以 下面是贡献的推导 有五位数 abcde * 10个 有两位数 fg * 3 个 那么这两种数组成的情况就是 a ...
- 字符串匹配dp+bitset,滚动数组优化——hdu5745(经典)
bitset的经典优化,即把可行性01数组的转移代价降低 bitset的适用情况,当内层状态只和外层状态的上一个状态相关,并且内层状态的相关距离是一个固定的数,可用bitset,换言之,能用滚动数组是 ...
- NOIp2018集训test-9-8(pm) (联考一day2)
把T1题读错了,想了一个多小时发现不可做.然后打了t2,常数不优秀.然后去打t3,lct,结果打挂爆0了. 然后今天就爆炸了. 如果这是noip我今年就可以直接回去学常规了.学常规多好,多开心. 今天 ...
- C++之运算符重载(二元)
一.加号+ 1.成员函数重载 2.友元函数重载 二.输出符号<< 三.索引符号 [ ] 四.补充说明 1.<二元运算符重载>课程评论: (一)为什么<<运算符的重载 ...
- Mybatis笔记 – Po映射类型
一.输入映射类型 parameterType定义输入到sql中的映射类型,可以是 简单类型 .po类对象(可自动生成 或 手动定义). pojo包装对象(用于综合查询,UserCustom用户自定 ...