合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 开发规范 遵循开发规范可以增强代码的可读性和可维护性,提高程序的执行效率,降低由于不规范的编写或修改导致的各种错误发生机率。本节将以ExDUI开发中的常见情况对代码开发中的规范要求进行说明。 * * * * * ### 总体要求 1. 开发者应当严格执行本规范以确保源代码的可读性及可维护性。 2. 所有的程序都应配有注释,以便提高程序代码的可读性。 3. 程序开发过程中,除特定情况应尽量避免使用拼音或拼音首字母的命名方式。 * * * * * ### 文件命名规范 1. 文件的命名应以与该文件相关的关键字词命名。 2. 命名的长度应在3-30个左右的字符。 3. 应严格区分文件的后缀名,对于常用格式的文件后缀名应遵循系统默认后缀名,对于相同私有格式的文件后缀名应保持一致。 4. 文件名应尽量使用英文进行命名,尽量不使用生僻字或Ansi编码以外的字符,以免部分软件不支持。 5. 使用英文名应遵循首字母大写的原则,尽量不使用空格,若使用缩写,应使用本节最后统一的缩写范例。 6. 不建议使用拼音或其他语言进行命名。 7. 应对软件工程中的各项文件进行目录分类管理,目录的命名遵照上面的规范实施。 * * * * * ### 变量名命名规范 1. 变量名的命名应与该变量存放数据有关。 2. 变量名的命名应尽量使用英文,遵循匈牙利命名法或驼峰命名法。 3. 变量名前缀应包含作用域、类型等关键信息。 4. 变量的命名应避免使用与函数名、程序集名、窗口等对象相同的名称。 5. 避免使变量名为另一个变量名的一部分。 6. 逻辑变量应包括 Is(是否/可否) 关键字,如 bWindowIsEnable 或 窗口是否可用。 7. 根据变量的作用域,变量名前缀可分为全局变量:g_XXX(全_XXX),程序集/类成员变量:m_XXX(集_XXX),静态变量:s_XXX(静_XXX),参数变量和局部变量:不加前缀(XXX)。 * * * * * ### 函数/子程序/成员方法命名规范 1. 函数/子程序/成员方法(以下统称函数)的命名应与该函数的功能有关。 2. 函数的命名应尽量使用英文,遵循驼峰命名法或首字母大写命名法。 3. 函数名应由动词开头,如 SaveImage 或 保存图片。 4. 若函数的返回值具有特定意义,应在函数名中得到体现,如第三点中的例子所示。 5. 当类中成员方法为某属性的读取设置器时,应以名词开头并首字母大写,如 ImageWidth 或 图片宽度。 6. 全局函数应包含与其功能相关的功能前缀,如 Obj_XX、组件_XX、Ex_Wnd_XX、窗口_XX等。 * * * * * ### 常量命名规范 1. 常量的命名应与该常量值代表的意义有关。 2. 常量的命名应尽量使用英文名命名。 3. 若使用英文命名,常量名应保持全部大写,单词间用下划线连接。 4. 常量应带有前缀用于描述常量所属的组别信息,如 STRING_ALIGN_CENTER 或 文本对齐_居中。 * * * * * ### 程序编写规范 1. 对于不同的程序功能,应区分不同的程序集或命名空间。 2. 循环中尽量不使用常数,假设某数组a,成员为10。循环不应使用 for i=1 to 10,而是 for i=1 to a.length,或不应使用 计次循环首(10,i) 而使用 计次循环首(取数组成员数(a),i)。 3. 尽量不随便定义全局变量。 4. 一个变量应只用于一个用途,且变量类型应符合该用途,同时变量名前缀应与变量类型一致。 5. 一个函数应实现一种功能,不应在一个函数中实现多种不同功能。 6. 函数中应尽量减少对全局变量的使用,必要时将其变为局部变量使用。 7. 函数与函数之间应只存在包含关系,而不应存在交叉关系。 * * * * * ### 注释规范 1. 注释应使用通顺易懂的中文语句和中文符号。 2. 对某段代码可以进行统一的段注释,也可对每句代码进行行注释,段注释应写在该段代码的上方。 3. 对重要变量和函数,逻辑和循环分支应有注释。 4. 可对部分代码进行注释调试,或将部分参数替换时临时放置于注释中。 5. 在代码编写完毕交付时,应删掉临时的或无关的注释内容。 6. 对于特定类型函数,需要进行附加的注释内容: 1. 事件函数应注释有回调函数的声明形式及参数意义,如“回调(整数行 X坐标,整数型 Y坐标,整数型 状态[取值为状态_开头的常量]),返回 整数型[是否拦截,1为拦截 0为放行]”。 2. 属性读取设置器函数若与XML绑定,应注释XML的对应属性名和属性值信息,如“@XML:Point='X坐标[整数型],Y坐标[整数型]'” * * * * * ### 布局文件编写规范 1. 布局文件遵循标准的XML语法。 2. 布局文件是大小写区分的,编写时请注意。 3. 布局文件中请区分使用闭合节点(<xx />)和开放节点(<xx></xx>),以便更好的表示是否有子控件。 4. 各节点的节点名应设置为与节点相关的名称,如<LoginUserName ... />表示登录用户名。 5. XML中存在转义字符,请注意自行转换。 6. XML中的所有符号均为半角符号,不可使用全角符号代替。 * * * * * ## 附录 ### 附1:主要名词/动词汉英对照表 | 中文 | 英文 | | -- | -- | | 获取 | Get | | 设置 | Set | | 附加 | Attach | | 创建 | Create | | 销毁 | Destory | | 释放 | Free | | 编辑 | Edit | | 修改 | Modify | | 加载 | Load | | 控制 | Control/Ctrl | | 初始化 | Initialization/Init | | 主要的 | Main | * * * * * ### 附2:缩写标准 | 缩写 | 全称 | 解释 | | -- | -- | -- | | addr | Address| 地址 | | arr/ary | Array | 数组 | | bg/bkg | Background | 背景 | | func | Function| 函数 | | img | Image | 图像 | | info | Infomation | 信息 | | max | Maximum | 最大 | | min | Minimum | 最小 | | msg | Message | 消息 | | tmp/temp | Temporary | 临时的 | | num | Number | 数字/号码 | | bmp | Bitmap | 位图 | | pic | Picture | 图片 | | proj | Project | 工程 | | rnd | Random | 随机 | | pwd | Password | 密码 | | subj | Subject | 主题 | | doc | Document | 文档 | | sys | System | 系统 | | wnd | Window | 窗口 | | ele | Element | 元素 | | obj | Object | 对象 | | ctrl | Control | 控制/控件 | | init | Initialization | 初始化 | | str | String | 字符串| | cls | Class | 类 | | lib | Library | 库 | | proc | process | 过程 | | ptr | Pointer | 指针 | | cbk | Callback | 回调 | * * * * * ### 附3 匈牙利命名法 变量前缀缩写 | 类型名称 | 前缀缩写| 示例 | | -- | -- | -- | | **类型前缀** ||| | boolean/逻辑型 | b | bIsOK | | byte/字节型 | by | byData | | binary/字节集 | bin/lpby/lp | binData,lpbyData,lpData | | datetime/时间日期 | dtm | dtmNow | | int/整数型 | i/n | iWidth,nWidth | | float/小数型 | f | fDistance | | double/双精度小数型 | d/lf | dMoney,lfMoney | | long/长整型 | l | lLength | | short/短整型 | n | nSecond | | ptr/指针 | p/lp | pVar,lpVar | | function/函数 | fn | fnGetX,pfnGetY | | void/无类型 | v | pvVar | | handle/句柄 | h | hWnd | | string/字符串 | sz | szName | | Unicode字符串 | wz | wzName | | object/对象 | o/obj | oPeople | | word/字(2字节) | w | wMonth | | double word/双字(4字节) | dw | dwSize | | unsigned/无符号 | u | uHeight | | array/数组 | a/arr | aPeople,arrPeople | | **用途前缀** ||| | file/文件 | f | fOut | | count/计数 | c | cRef | | temporary/临时 | t | tData | | color/颜色 | cr | crText | | picture/图片 | pic | picFace | | source/源 | src | srcDC | | destination/目的 | dest/dst | destDC | | Point/坐标 | pt | ptCursor | | Rect/矩形 | rc | rcWindow | | callback/回调函数 | cbk | cbkOnClick | | **控件前缀** ||| |Label/标签| lab | labUserName | |Button/按钮| btn | btnOK | |Edit/文本框| txt,edt | txtPwd,edtFileName | |CheckBox/复选框| chk | chkRememberMe | |RadioButton/单选框| rdb,radio | rdbAll | |ImageBox/图片框| img | imgFace | |ListView/列表框| lst | lstFileList | |ComboBox/组合框| combo | comboBirthYear | |GroupBox/分组框| gp | gpSystem | |Page/页面| pg | pgInfo | |Window/窗口| wnd,frm | wndLogin,frmMain |