OSSD研发规范
1.3. 集成环境内的项目目录设置
每个项目在VC编成编辑环境的设置都采用相对路径的设置,不可采用绝对路径,保证其备份到光盘设备后或恢复到硬盘时, 不需要再过多的设置就可直接编译。同样在用#include 语句时不要太多的目录搜索,如下所示:
#include “../../../somehead.h”
改成:
#include \ 或#incldue \
并注意#include \与#include
1.4. 项目修改记录追踪
每一个VC项目必须存在Changes.Log,用以记载项目产生以来所有的改动,其格式必须如下:
日期:
2009-08-25
修改人: ** 修改原因:
相关修改的文件: 修改内容详细描述:
另外可充分利用Visual C++自动生成的Readme.txt文件来记载项目相关的信息。
2. 文件设置规范
2.1. 文件生成
文件名的语义应该能概括表达本文件所包含函数主要实现什么功能。文件名用小写英文字母表达,严禁使用中文;对于几个单词组合表达的文件名,单词之间用_符号分开。文件名的后缀定义:
a. VC自动生成的源文件和头文件后缀分别为:*.cpp和.h。 b. 其他源文件和头文件后缀分别为:*.cxx和*.hxx。
对于规范的VC派生类,尽量用Class Wizard生成文件格式,尽量避免用手工制作
Page 5 of 13
OSSD研发规范
头文件/实现文件。
// Constructors //构造 // Attributes //属性 // Operations //操作, // Overridables //可重载的 // Implementation //实现
每一次类都至少有一个//Implementation,在不同的位置MFC做不同的处理,在编写代码时最好 与MFC这种风格一致。
2.2. 头部注释
文件头部注释主要是表明该文件的一些信息,其格式如下:
/////////////////////////////////////////////////////////////////// // 文件名 :
// 版本 : // 目的及主要功 : // 创建日期 :
// 修改日期 : // 作者 :
// 修改者 : ////////////////////////////////////////////////////////////////
2.3. 文件规格化功能键
源文件在编写完毕时,Visual C++提供Alt+F8功能键,进行文件规格化,常使用该按键可使得文件保持规格化(注,Alt+F8功能键对连续两个CASE语句则会发生处理错误,不能规格化)。
3. 函数使用规范
3.1. 函数名的约定
函数名的语义应该能反映函数实现的功能。 对于api函数的命名规则为:
a. 函数一律以api_lm_开头;lm表示此函数为lonicera-mda子系统的函数, pdm模块的函数名以api_lp_开头。
Page 6 of 13
OSSD研发规范
b. 后面的命名以函数语义为基准,如创建一点的函数完整的函数名为api_lm_ceate_point()。 对于DI函数的命名规则:
a. 函数名=lm_+(函数语义)。
b. 对于几个单词组合表达的函数名,各单词之间以_符号分开。
3.2. 函数注释
ClassWizard自动生成的函数,如消息响应函数,则不必太多的注释和解释; 对于自行编写的函数,若是系统关键函数,则须在函数实现部分的上方标明该函数的信息,格式如下:
//====================================================================== // 函 数 名: // 功能描述: // 输入参数: // 输出参数: // 创建日期: // 修改日期: // 作 者: // 附加说明:
//======================================================================
4. 变量命名规则
变量尽量采用匈牙利命名法,同时结合VC的原则;一般情况下,变量的取名方式为:
注:类名前缀改为Lm,对于非全局的类最好有语义表示其所属模块。类的实例命名与类名大致相同,只是类名语义表示类的通用含义,而类名表示此实例的具体语义。如类名LmSketPoint表示草图点的类定义,而它的两个实例 _StartPoint,_EndPoint分别代表起点和终点的语义。类的实例命名带上前缀_。 特殊约定:
a. MouseTool的派生类的前缀为_Mt.
类型 Class Interface 接口
例子 LmObject IUnknown
备注
表示类型本身
不与范围前缀结合使用
Page 7 of 13
OSSD研发规范
b. 对话框类的前缀为CDlg. c. 橡皮条类的前缀为_Rb. 范围前缀:
前缀 g_ m_ l_
类型 全局作用域 成员变量 局部作用域
例子
g_Servers m_pDoc,
备注
l_strName 少用
注:编程时尽量少用全程变量,对于全程变量还应在类型前缀后加上如下关键字: 特征模块 : Fea 草图模块 : Sket 装配模块 : Asm 工程图模块 : Lay 曲面模块 : Surf 界面模块 : Ui
类型前缀 1、:
常用的一般数据类型的前缀表示(这只是一部分)
前缀 ch ch b n n w l dw p lp lpsz lpsz lpsz h lpfn 类型 char TCHAR BOOL int UINT WORD LONG DWORD * FAR* LPSTR LPCSTR LPCTSTR handle (*fn)()
内存规格描述 8-bit character
16-bit character if _UNICODE is defined Boolean value system)
Unsigned value (size dependent on nLength operating system) 16-bit unsigned value 32-bit signed integer 32-bit unsigned integer
Ambient memory model pointer Far pointer
32-bit pointer to character string
wPos lOffset dwRange pDoc lpDoc lpszName 例子 chGrade chName bEnabled
Integer (size dependent on operating nLength
32-bit pointer to constant character string lpszName 32-bit pointer to constant character string lpszName if _UNICODE is defined Handle to Windows object
hWnd
callbackFar pointer to CALLBACK function lpfnAbort
常用Windows对象名称缩写:
Page 8 of 13
相关推荐: