飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3412|回复: 0

Delphi的编码规范

[复制链接]
  • TA的每日心情
    开心
    2019-9-19 16:05
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2007-2-8 10:49:25 | 显示全部楼层 |阅读模式
    1.规范简介

    本规范主要规定Delphi源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使公司软件开发人员的源代码书写习惯保持一致。这样做可以使每一个组员都可以理解其它组员的代码,以便于源代码的二次开发记忆系统的维护。




    2.单元的格式

    2.1 基本要求

    2.1.1 缩进

         缩进就是在当源程序的级改变时为增加可读性而露出的两个空格。缩进的规则为每一级缩进两个空格。不准许使用Tab。因为Tab会因为用户所作的设置不同而产生不同的效果。当遇到begin 或进入判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯增加一级, 当遇到end或退出判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯减少一级。

    2.1.2  Begin…End

               begin语句和end语句在源程序中要独占一行,例如:
    for I := 0 to 10 do begin //不正确的用法
    end;
    for I := 0 to 10 do //正确的用法
    begin
    end;

    2.1.3空格

    在操作符及逻辑判断符号的两端添加空格,例如:I  :=  I + 1;,a  and b 等,

    但添加括号时不需要空格。

    例如:if ( a>b )and( a错误的用法
      if (a  >  b)  and  (a  <  c) then //正确的用法

    2.1.4 变量

             尽量不用缩写,尽量用名词,如有多个单词则每个单词的第一个字符一定要大写;见名知意

       所有模块内全局变量必须用‘F’为前缀。如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。

    2.2单元说明

      新建每一个新单元文件时,请先按如下格式定制单元说明

    {*******************************************************
    Copyright?(c)?2000-2004?*********公司技术开发部

    Project:---该单元所属的项目

    Module:---该单元所属的功能模块

    Describe:---该单元的功能

    Author:---创建人

    Date:---创建日期

    Version版本号:

    History`s Modification:---修改历史区域

    {*************************

                                  Modify No:---修改编号

                            Modifier:---修改人
                            DateTime:---修改时间
                            Cause:---修改原因

                            Modify No:---修改编号

                            Modifier:---修改人
                            DateTime:---修改时间
                            Cause:---修改原因

                           *************************}

    *******************************************************}

    2.3 过程与函数的说明

    {*******************************************************

      PrcedureeName/FunctionName:
    Input: a---输入参数说明,b---输入参数说明,c---输入参数说明
    Output: x---输出参数说明

    Const: s---常量说明,t---常量说明

    var: x---变量说明, j---变量说明

    Describe:----功能描述

    若该过程或函数不是该单元创建人所撰写请在此后再加上以下几项内容:

         Author:

         Date:

    *******************************************************}

    3.控件的命名

    控件的名称可使用以下简写,但所用简写于控件名称之间药添加‘_’:

    Standard Tab
    mm    TMainMenu
    pm    TPopupMenu
    mmi   TMainMenuItem
    pmi   TPopupMenuItem
    lbl     TLabel
    edt    TEdit ; TSpinEdit ; TMaskEdit
    mem  TMemo
    btn    TButton ; TBitBtn ; TSpeedButton ; TSpinButton
    cb      TCheckBox
    rb      TRadioButton
    lb       TListBox
    cb     TComboBox
    scb   TScrollBar
    gb    TGroupBox
    rg     TRadioGroup
    pnl   TPanel
    cl     TCommandList


    Additional Tab

    sg      TStringGrid
    dg      TDrawGrid
    img    TImage
    shp    TShape
    bvl     TBevel
    sbx     TScrollBox
    clb      TCheckListbox
    spl      TSplitter
    stx      TStaticText
    cht     TChart


    Win32 Tab
    tbc     TTabControl
    pgc    TPageControl
    il        TImageList
    re       TRichEdit
    tbr     TTrackBar
    prb    TProgressBar
    ud      TUpDown
    hk      THotKey
    ani     TAnimate
    dtp    TDateTimePicker
    tv      TTreeView
    lv      TListView
    hdr   THeaderControl
    stb    TStatusBar
    tlb    TToolBar
    clb    TCoolBar


    System Tab
    tm ??TTimer
    pb ??TPaintBox
    mp ?TMediaPlayer
    olec ?TOleContainer
    ddcc ?TDDEClientConv
    ddci ?TDDEClientItem
    ddsc ?TDDEServerConv
    ddsi ?TDDEServerItem

    ?

    Samples Tab
    gg?? TGauge
    cg?? TColorGrid
    spb?
    spe?
    dol? TDirectoryOutline
    cal? TCalendar
    ibea? TIBEventAlerter

    ?

    ActiveX Tab
    cfx? TChartFX
    vsp?? TVSSpell
    f1b?? TF1Book
    vtc?? TVTChart
    grp?? TGraph

    ?

    Win31 Tab
    dbll?? TDBLookupList
    dblc?? TDBLookupCombo
    ts???? TTabSet
    ol???? TOutline
    tnb??? TTabbedNoteBook
    nb???? TNoteBook
    hdr??? THeader
    flb??? TFileListBox
    dlb??? TDirectoryListBox
    dcb?? TDriveComboBox
    fcb?? TFilterComboBox


    Midas Tab
    prv?? TProvider
    cds?? TClientDataSet
    qcds?? TQueryClientDataSet
    dcom? TDCOMConnection
    olee?? TOleEnterpriseConnection
    sck?? TSocketConnection
    rms?? TRemoteServer
    mid?? TmidasConnection


    Internet Tab
    csk ?TClientSocket
    ssk ?TServerSocket
    wbd ?TWebDispatcher
    pp ???TPageProducer
    tp ???TQueryTableProducer
    dstp? ?TDataSetTableProducer
    nmdt ??TNMDayTime
    nec ???TNMEcho
    nf ????TNMFinger
    nftp ???TNMFtp
    nhttp ??TNMHttp
    nMsg ??TNMMsg
    nmsg ??TNMMSGServ
    nntp ???TNMNNTP
    npop ???TNMPop3
    nuup ???TNMUUProcessor
    smtp ???TNMSMTP
    nst ????TNMStrm
    nsts ???TNMStrmServ
    ntm ???TNMTime
    nudp ??TNMUdp
    psk ???TPowerSock
    ngs ???TNMGeneralServer
    html? ?THtml
    url? ??TNMUrl
    sml ??TSimpleMail


    Data Access Tab
    ds? ?TDataSource
    tbl? ?TTable
    qry? ?TQuery
    sp ??TStoredProc
    db ??TDataBase
    ssn? ?TSession
    bm ??TBatchMove
    usql ??TUpdateSQL


    Data Controls Tab
    dbg? ?TDBGrid
    dbn ??TDBNavigator
    dbt ??TDBText
    dbe ??TDBEdit
    dbm? ?TDBMemo
    dbi ??TDBImage
    dblb ??TDBListBox
    dbcb? ?TDBComboBox
    dbch? ?TDBCheckBox
    dbrg ??TDBRadioGroup
    dbll ??TDBLookupListBox
    dblc ??TDBLookupComboBox
    dbre ??TDBRichEdit
    dbcg ??TDBCtrlGrid
    dbch ??TDBChart


    Decision Cube Tab
    dcb ??TDecisionCube
    dcq ??TDecisionQuery
    dcs ??TDecisionSource
    dcp ??TDecisionPivot
    dcg ??TDecisionGrid
    dcgr ?TDecisionGraph


    QReport Tab
    qr ??TQuickReport
    qrsd ?TQRSubDetail
    qrb ??TQRBand
    qrcb ??TQRChildBand
    qrg ??TQRGroup
    qrl ??TQRLabel
    qrt ??TQRText
    qre ??TQRExpr
    qrs? ?TQRSysData
    qrm ??TQRMemo
    qrrt ??TQRRichText
    qrdr? ?TQRDBRichText
    qrsh ??TQRShape
    qri ???TQRImage
    qrdi ??TQRDBMImage
    qrcr? ?TQRCompositeReport
    qrp ??TQRPreview
    qrch TQRChart


    Dialogs Tab
    OpenDialog ???????TOpenDialog
    SaveDialog ???????TSaveDialog
    OpenPictureDialog ?TOpenPictureDialog
    SavePictureDialog ??TSavePictureDialog
    FontDialog ????????TFontDialog
    ColorDialog ???????TColorDialog
    PrintDialog ????????TPrintDialog
    PrinterSetupDialog? ?TPrintSetupDialog
    FindDialog ?????????TFindDialog
    ReplaceDialog ??????TReplaceDialog



    4.修改的要求

    4.1修改历史记录
    对源文件进行经过批准的修改时,修改者应在程序文件头加入修改历史项。在以后的每一次修改时,修改者都必须在该项目中填写下列信息:
    Modifier:
    DateTime:
    Cause:
    Comment:

    4.2新增代码行
    新增代码行的前后应有注释行说明。
    // ab  修改人; 修改时间; 修改说明。
    新增代码行
    // ae

    4.3删除代码行
    删除代码行的前后用注释行说明。
    //db 修改人,修改时间,修改说明。
    //要删除的代码行(将要删除的语句进行注释)
    //de

    4.4修改代码行
    修改代码行以删除代码行后在新增代码行的方式进行。
    //mb 修改人,修改时间,修改说明。
    //pre  修改前的代码行

    修改后的代码行
    //me

    5.文件的命名



       项目文件必须使用一个有意义的名字。例如: Delphi中系统信息的项目文件被命名为 SysInfo.dpr。
    3.7.2 Form 文件
         同Form的名称相一致:例如:Form的名称为frrmMain则Form文件的名称就为frmMain.dfm。对应的Unit文件就是frmMain.pas
    3.7.3 Data Module 文件
         data module文件的命名应该有意义,并且使用‘DM’作为前缀。例如: 用户data module 被命名为‘dmCustomers.dfm’。 对应的Unit文件就是rdmCustomers.pas
    3.7.4 Remote Data Module 文件
         remote data module文件的命名应该有意义,并且使用‘RDM’作为前缀。例如:用户remote data module 被命名为‘rdmCustomers.dfm’。 对应的Unit文件就是rdmCustomers.pas
    3.7.5普通 Unit文件
        unit文件的命名应该有意义,并且使用‘u’作为前缀。例如: 通用unit 被命名为‘uGeneral.pas’。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表