zoukankan      html  css  js  c++  java
  • 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打头

     

  • 相关阅读:
    python3----练习题(斐波那契)
    python3----运算符
    python3----函数、匿名函数
    python3----生成器generator(yield)
    Python捕获异常
    OS模块
    发送邮件
    IO文件读写
    Unittest框架概念
    生成报告
  • 原文地址:https://www.cnblogs.com/bjxsky/p/4619614.html
Copyright © 2011-2022 走看看