1、变量名前缀【命名约定】 一、变量名的约定: 命名规则主要采用匈牙利命名法。进行了一些增删。 1. 用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。 - 前缀 类型 例子 b * Boolean bIsParent by 字节 byFlag ch * char chText c * 类对象 cMain(对象实例) fn Function fnCallback h * Handle(句柄) hWnd i * int n * 无符号整型 p * 指针 sz,str * 字符串 w WORD x,y 坐标 xPos, yPos - 其中,带“*”号的为常用约定。 其它前缀: m_ 类成员变量
2、m_nVal, m_bFlag g_ 全局变量 g_nMsg, g_bFlag 局部变量中可采用如下几个通用变量:nTemp,nResult,I,J(一般用于循环变量)。 二、VB中控件的命名: 用小写前缀表示类别: fm 窗口 cmd 按钮 cob combo,下拉式列表框 txt 文本输入框 lab labal,标签 img image,图象 pic picture grd Grid,网格 scr 滚动条 lst 列表框 frm fram 【注释规范】 一、函数 在函数开头,用如下格式注释: /*/ /* Function: DelStringFrom string */ /* 从一个St
3、ring删除另一个String。 */ /* 参数:strByDelete,strToDelete */ /* strByDelete: 被删除的字符串(原来的字符串) */ /* strToDelete: 要从上个字符串中删除的字符串。 */ /* 返回:找到并删除返回0,否则返回-1. */ /*/ 二、变量 对于非通用的变量,请在定义时加以注释说明,变量定义尽可能放在最开始处。 三、文件注释 在文件开头注释以下内容: / / Project: 文件所在的项目名,如:eForum / By: 作者、修改者、.,如:xiaobo、qyz. / Discription: 说明文件的功能。 /
4、四、其它 函数内各功能模块,如:循环、流程的各分支等,尽可能多的加以注释。程规范1.基本要求1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。1.3 尽量使用标准库函数和公共函数。1.4 不要随意定义全局变量,尽量使用局部变量。1.5 使用括号以避免二义性。2.可读性要求2.1 可读性第一,效率第二。2.2 保持注释与代码完全一致。2.3 每个源程序文件,都有文件头说明,说明规格见规范。2.4 每个函数,都有函数头说明,说明规格见规范。2.5 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。2.7
5、常量定义(DEFINE)有相应说明。2.8 处理过程的每个阶段都有相关注释说明。2.9 在典型算法前都有注释。2.10 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6个字节。2.11 循环、分支层次不要超过五层。2.12 注释可以与语句在同一行,也可以在上行。2.13 空行和空白字符也是一种特殊注释。2.14 一目了然的语句不加注释。2.15 注释的作用范围可以为:定义、引用、条件分支以及一段代码。2.16 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3 。3. 结构化要求3.1 禁止出现两条等价的支路。3.2 禁止GOTO语句。3.3
6、用 IF 语句来强调只执行两组语句中的一组。禁止 ELSE GOTO 和 ELSE RETURN。3.4 用 CASE 实现多路分支。3.5 避免从循环引出多个出口。3.6 函数只有一个出口。3.7 不使用条件赋值语句。3.8 避免不必要的分支。3.9 不要轻易用条件分支去替换逻辑表达式。4. 正确性与容错性要求4.1 程序首先是正确,其次是优美4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。4.3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。4.4 所有变量在调用前必须被初始化。4.5 对所有的用户输入,必须进行合法性检查。4.6 不要比较浮点
7、数的相等,如: 10.0 * 0.1 = 1.0 , 不可靠4.7 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。4.8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。5. 可重用性要求5.1 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。5.2 公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。5.3 公共控件或类应建立使用模板。附:C 编程规范,delphi作相应的参考.1适用范围本标准适用于利用Visul C+ ,Borland C+进行软件程序开发的人员.。.2变量命名命名必须具有一定的实际意义
8、,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意义字符串,如果连续意义字符串仅两个,可都大写.如OK.具体例程:BOOL类型 bEnable;ch * char chTextc * 类对象 cMain(对象实例)h * Handle(句柄) hWndi * intn * 无符号整型p * 指针sz,str * 字符串w WORDx,y 坐标Char或者TCHAR类型 与Windows API有直接联系的用szAppName10形式否则用FileName10形式,单个字符也可用小写字母表示;Int类型 nCmdShow;LONG类型 lParam;UINT类型 uNotify;
9、DWORD类型 dwStart;PSTR类型 pszTip;LPSTR类型 lpCmdLineLPTSTR类型 lpszClassName;LPVOID类型 lpReservedWPARAM类型 wParam,LPARAM类型 lParamHWND类型 hDlg;HDC类型 hDC;HINSTANCE类型 hInstanceHANDLE类型 hInstance,HICON类型 hIcon;int iTmpfloat fTmpDWORD dw*String , AnsiString str *m_ 类成员变量 m_nVal, m_bFlagg_ 全局变量 g_nMsg, g_bFlag局部变量中
10、可采用如下几个通用变量:nTemp,nResult,I,J(一般用于循环变量)。其他资源句柄同上.3常量命名和宏定义常量和宏定义必须具有一定的实际意义;常量和宏定义在#include和函数定义之间;常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义的右侧必须有一简单的注释,说明其作用;资源名字定义格式:菜单:IDM_XX或者CM_XX位图:IDB_XX对话框:IDD_XX字符串:IDS_XXDLGINIT:DIALOG_XXICON:IDR_XX.4函数命名函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名, 如是内部函数
11、,只要注释其定义文件名;第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线间隔,示例如下:void UpdateDB_Tfgd (TRACK_NAME); /Module Name :r01/sdw.cvoid PrintTrackData (TRACK_NAME); /Module Name :r04/tern.cvoid ImportantPoint (void); /Module Name :r01/sdw.cvoid ShowChar (int , int , chtype); /Local Modulevoid ScrollUp_V (int , int)
12、; /Local Module.5结构体命名结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数据区,必须注明其所属的进程。全局数据定义只需注意其用途。示例如下:typedef structchar szProductName20;char szAuthor20;char szReleaseDate16;char szVersion10;unsigned long MaxTables;unsigned long UsedTables;DBS_DATABASE;DBS_DATABASE Gdat
13、aBase;6 控件的命名:用小写前缀表示类别用小写前缀表示类别:fm 窗口cmd 按钮cob combo,下拉式列表框txt 文本输入框lab labal,标签img image,图象pic picturegrd Grid,网格scr 滚动条lst 列表框frm fram7注释原则上注释要求使用中文;文件开始注释内容包括:公司名称、版权、作者名称、时间、模块用途、背景介绍等,复杂的算法需要加上流程说明;函数注释包括:输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;程序中注释包括:修改时间和作者、方便理解的注释等;引用一: 文件开头的注释模板/* 文件名:
14、* Copyright (c) 1998-1999 *公司技术开发部* 创建人:* 日 期:* 修改人:* 日 期:* 描 述:* 版 本:*-*/引用二: 函数开头的注释模板/* 函数名:* 输 入: a,b,c* a-* b-* c-* 输 出: x-* x 为 1, 表示.* x 为 0, 表示.* 功能描述:* 全局变量:* 调用模块:* 作 者:* 日 期:* 修 改:* 日 期:* 版本*/引用三: 程序中的注释模板/*-*/* 注释内容 */*-*/8 程序a. 程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,尽量不采用递归模式。b. 编写程序时,亦必须想好测
15、试的方法,换句话说,”单元测试” 的测试方案应在程序编写时一并拟好。c. 注释一定要与程序一致。d. 版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。e. 程序中每个block 的开头 ” 及 ” 必须对齐,嵌套的block 每进一套,缩进一个tab,TAB 为4个空格,block类型包括if、for、while、do等关键字引出的。f. 对于比较大的函数,每个block 和特殊的函数调用,都必须注明其功能,举例如下:count.divisor = 1193280 / freq; / compute the proper count
16、OutByte(unsigned short)67, (unsigned char)182); / tell 8253 that acount is comingOutByte(unsigned short)66, count. c0); / send low-order byteOutByte(unsigned short)66, count. c1); / send high-order bytebcb,delphi中的变量命名:遵循匈牙利命名法,命名必须有意义,制定如下规定窗体: 以大写的W开始,如About版权窗体, 命名为WAbout文件:以大写的F开始,如About版权窗体,文件命
17、名为FAbout.cpp按钮(Button):如退出按钮,命名为btnExit基类: 加base标记,如报表基类,窗体命名为:WBaseRep, 文件命名为FBaseRep.cppxuxn的博客记录一个程序员成长道路上的点点滴滴 首页 新随笔 联系 订阅 管理Delphi命名规范参考VCL的代码,结合笔者近两年来的一些经验,可以简单总结出一套Delphi下常用的命名规范。 类型定义(type) 包括class、record、枚举、procedure/function变量等所有写在type下的类型定义 用大写的T开头,例如TList(class)、TPoint(record)、TAlign(枚举
18、)、TNotifyEvent(procedure变量) 常量(const) 自定义的简单类型常量(如Integer、Pointer等类型)建议用C开头 也有不少常量是需要根据单词意思推断的,如MaxDateTime(以Max开头,让人从意思上猜到是常量) 字符串常量用S开头(因为字符串常量与简单类型常量在编译时处理方式不同,详情可参考Delphi源代码分析2.2.4常量) 类的private成员变量、implementation下的全局变量 用F开头 类里绝对不要出现public成员变量,所有要公开的属性用property或者procedure、function代理出来 interface下的
19、全局变量 interface下最好不要出现全局变量,可以替换为用interface里的function返回implementation下的全局变量值 如果一定要有的话,用G开头 局部变量 用L开头 函数(procedure或function)实参 用A开头除了这些以外,笔者有一些自己常用的Delphi编程习惯,拿出来跟大家分享,欢迎拍砖。 用项目缩写做名字开头 由于Delphi里没有C+中的namespace或者Java里的package这些概念,所以名字冲突问题比较严重。为了尽量避免这种问题,可以在一个项目的专有全局类型、常量前面加上项目名称的缩写。例如对于一个叫做MyProject的项目,
20、其下的专属类可以叫做TMPOneClass,常量可以叫做CMPOneNumber,等等。 用function代替全局变量 当我们需要访问剪切板时,会用到Clipboard这个对象,不知道大家有没有注意到,这其实是一个返回TClipboard对象的function,而且还用到了设计模式的Singleton模式。 由于Delphi里调用无参函数可以不写括号,所以很多时候可以把一个function当做一个变量使用,具体怎么用大家可以发散一下思维,Singleton只是其中一个例子。 用Pascal命名法 上面这些命名方式,总得来说是根据Pascal命名法演化而来的。 Pascal命名法的基本思想就是
21、一个名字里如果包含多个单词,每个单词的首字母都要大写,例如ThisIsAnExample。 不建议使用下划线命名法(如this_is_an_example),主要是因为Delphi的变量名自动补全工具不会自动过滤下划线,手动输入比较累。 由于Delphi中变量名对大小写不敏感(如A和a其实是同一个变量,这是跟C语系的语言最大的不同),所以绝对不要尝试用字母大小写区分变量,所有变量最好都用大写字母开头。MIS系统编码规范编写本规范目的编写本规范的目的在于提高代码的可读性与可维护性,规范项目组成员形成一种统一的编码风格,便于代码在项目组成员之间的沟通与交流。解决每个人只能读懂自己编写代码问题,也有
22、利于项目的移交。当前,Delphi 开发工具特别适合于开发应用程序类型的数据库管理系统,C#比较适合开发Web应用的系统,本编码规范主要是针对 Delphi、C# 两种开发工具,说明在编程开发过程中应该注意的一些事项。在数据库管理系统的开发过程中,所涉及到的基本功能模块可以划分为:编辑模块Edit Module(包括增加与修改)、查询模块Browse Module、统计模块Stat. Module、报表打印模块Report Module、系统公共通用函数模块System Common Function Module、系统统用数据结构模块System Common Data Type Modul
23、e以及系统公共的数据库连接访问模块System Data Access。以下将基于这种结构的数据库管理系统,说明代码规范。 本规范主要是根据本人近年来的实际工作中经验与教训,对编码以及代码质量、代码的可控制性上的一个总结,规范本身可能会存在一些不合理的地方,欢迎大家批评指正,便于本规范的不断完善。模块级编码规范1、窗体/页面命名规范通常,带有窗体/页面模块的,窗体命名规则是:Fm/Pg + 操作类型 + 业务名称,操作类型通常包括:编辑(Edt)、查询(Brw)、统计(Stat)、报表(Rpt),业务名称通常和数据库中对应的业务表名称相关。这样,可以很直观看出来该模块和数据库中的哪类业务相关。
24、并且通过操作类型能够知道该窗体的功能。比如,前台销售模块,数据库中的表名称为:S_Sale_M(销售主表)和S_Sale_S(销售明细表),如果为前台开单业务逻辑模块命名,那么可以把窗体名称取名为:FmEdtSale/PgEdtSale,前台开单查询可以取名为:FmBrwSale/PgBrwSale,前台开单统计可以命名为:FmStatSale/PgStatSale,打印编辑模块单据可以采用(Fm/Pg)RptEdtSale,打印查询模块结果数据可以采用(Fm/Pg)RptBrwSale。2、控件命名规范控件命名规范:控件功能/类别(小写的英文字母)+控件关联数据库字段含义(第一个字母大写),
25、Delphi中,如果与数据库直接关联,用db+控件功能/类别(第一个字母大写)+控件关联数据库字段含义(第一个字母大写)。1、 编辑控件,文本框规范:Delphi中,edtHandler,表示TEdit控件,它关联到数据库中的Handler字段。Delphi中还有与数据库直接关联的TDBEdit控件,则命名规则为:dbEdtHandler。C#中,txtHandler,表示TextBox控件,关联到数据库的Handler字段。2、 组合框控件,在Delphi中,cbx作为前缀,加上数据库字段,如果是数据库关联控件,则用dbCbx+数据库字段。在C#中,采用ddl+数据库关联字段,表示DropD
26、ownList与数据库字段关联控件。3、 列表框,在Delphi与C#中,都采用lst控件。Delphi中还有与数据库直接关联的TDBListBox控件,则命名为dbLst+关联字段名称。4、 复选框,在Delphi与C#语言中,皆采用chk+关联字段,Delphi中采用dbChk+关联字段表示 TDBCheckBox。5、 单选框,在Delphi与C#中,皆采用rdb表示RadioButton。6、 标签Label,如果标签在代码中,将利用到它,则标签也需要纳入命名规范,其命名规范为lbl+关联字段。7、 图片字段,在Delphi与C#中,皆采用img表示Image。8、 按钮,不管采用何种
27、控件充当按钮角色,都用btn+按钮功能。比如,增加按钮,命名规范为:btnNew。9、 网格控件DataGrid/DBGrid,在Delphi与C#中,皆采用dtg+业务表名称,比如dtgSale,表示网格中显示的是销售内容数据列表。10、 数据列表,在Delphi与C#中,皆采用dtl+关联字段。11、 数据存储与访问控件,数据集用ds+关联表名称,数据视图采用dv+关联表名称。Command对象用dbCmd,Connection用dbCnn,DataAdapter用dbDtp。3、模块命名规范带窗体功能模块其窗体的命名规范是:Fm/Pg + 操作类型 + 业务名称,那么对应的原文建起命名规范可以采用:操作类型 + 业务名称。比如,前台开单功能模块,窗体名称可以取名为:FmEdtSale/ PgEdtSale,其源文件可以命名为:EdtSale.pas/ EdtSale.aspx。4、代码编码规范1)、变量命名规范:模块私有变量命名用m_变量含义名,比如:m_Result表示模块的返回结果值。函数级变量去掉 m_就可以了。2)、事件里面的代码尽量少(一般不超过5行),采用事件有一个缺点,一旦某事件取消,那么里面的代码也会跟
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1