1、(一) 编写目的为了健全公司软件源代码的管理,增加源代码的可读性,提高软件开发效率,特编写些规范。此规范并非源代码编写的一个标准,而是作为一个参考,以培养开发人员良好的编程习惯。(二) 范围开发时源代码的命名、注释规范(包括ASP,C/C+,JAVA)。二 规范内容:2.1 源代码标注规范(for C+):2.1.1 缩写规则 缩写后一个单词的长度宜为3-6个字母。 缩写后应能辨认出原意。 尽量使用公认的缩写习惯,如:Window缩写为Win; SmartPoint缩写为sp。2.1.2 命名规则使用含义鲜明、描述性的英文单词或缩写命名;命名由字母、数字和下划线构成,一般情况下不得超过32个字
2、符;命名建议采用组合词的方式。2.1.3 变量命名规则 一般性规则:由单词(第一个单词或其缩写字母全部小写,以后单词首字母大写,其余的字母小写)构成名词词组,如:int nValue; CString strTemp; CListCtrl listUserInfo;第一个单词(前缀)的缩写格式原则上以匈牙利命名方式为准(参见表一:匈牙利命名法),并且原则上不建议用下划线作为单词间的连接符:表一:匈牙利命名法前缀类型描述实例arrArray静态数组arrPointbBOOL布尔值bEnabledbyunsigned char(BYTE)8位无符号字符byWeekchChar 8位字符chGrad
3、etchTCHAR如果是_UNICODE,为16位字符tchNamei/nInt整形(其大小依赖于操作系统)iRangeuUINT无符号整形(其大小依赖于操作系统)nLengthusunsigned short无符号短整形usPortwWORD16位无符号值wParamlLONG32位有符号整形loffsetdwDWORD32位无符号整形dwVolumefFloat4字节浮点数fHighdDouble8字节浮点数dAmountcyCURRENCY8字节货币类型cySellp*指针 pDoclpFAR *远指针lpDoclpszLPSTR为32位字符串指针lpszNamelpcszLPCSTR3
4、2位常量字符串指针lpcszNamelpctszLPCTSTR如果_UNICODE定义,为32位常量字符串指针lpctszNamebstrBSTR带有4字节长度前缀的w_chart数组bstrMessagepbstrBSTR*BSTR数据类型指针pbstrMsgstrStringCString类型的字符串strMessageochOLECHAROLECHAR字符类型ochXoszOLECHAR*OLECHAR字符串类型oszXvarVARIANTVARIANT数据类型pvarVARIANT*VARIANT数据类型指针saSAFEARRAYSAFEARRAY数据类型psaSAFEARRAY*SA
5、FEARRAY数据类型指针dlgCDialogWindows对话框stcCStaticWindows静态文本控件edtCeditWindows编辑框控件lsbCListBoxWindows列表控件btnCButtonWindows按钮控件scbCScrollBarWindows滚动条控件spnCSpinButtonCtrlWindowswe微调按钮控件tabCTabCtrlWindows选项卡控件rtfCRichEditCtrlWindows富文本编辑框控件sldCSliderCtrlWindow滑块控件listClistCtrltreCtreeCtrlWindows树形控件dtcCDateT
6、imeCtrlWindows时间选取器控件prgCProgressCtrlWindows进度指示器控件cboCComboBoxWindows组合框控件ilsCImageListWindows图像列表tlbCToolBarCtrlWindows工具条控件mnuCmenuWindows菜单控件staCStatusBarWindows状态条控件wndCWndWindows窗口cxWindows X坐标YWindows Y坐标ptCpointWindows点阵hWndsizeCsizeWindows尺寸rect/rcCrectWindows矩形rectpenCpenWindows画笔brCbrushW
7、indows刷子fntCfontWindows字体crCOLORREFWindows颜色值RGBPMpTemp 临时变量PMpBuffhHandleWindows对象句柄lpfnCallback指向CALLBACK函数的远指针lpfnAbortit/iteriterator迭代子itvectstd:vector标准模板库mapdequesetSetmultisetmultimap 指针类型的变量,必须加上前缀p,如:int* pnValue;。 全局(静态)变量的命名规则同第一条的规定,并且必须加上前缀g_ 类成员(静态)变量的命名规则同第一条的规定,并且必须加上前缀m_ 模块(函数/过程)内
8、部的重要变量命名遵循第一条的规定。 模块(函数/过程)内部的静态变量命名遵循第一条的规定,并且加上前缀s_ 其余变量在不损害程序易读易懂原则的基础上酌情处理。这些变量通常是模块内的临时变量,如循环控制变量、数组的下标等,它们可用缩写进行简化处理,如:int i;2.1.4 常量命名规则 宏(#define)或者常量修饰符(const):大写字母组成的名词词组,单词间用下划线作为连接符,如:#define INVALID_CLOSE 0; const double INVALID_CLOSE = double(0); 枚举类型(enum):此时的命名规则同变量命名的一般性规则,可参考MFC或AD
9、O等的命名方式。2.1.5 函数命名规则单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:void DrawLine ( void );2.1.6 类命名规则 类的原型,是前缀C加单词构成的动宾词组,每个单词首字母大写,其余字母小写。class CStockPacket; class CPacket; 类的实例变量,采用小写首字母缩写的方式定义,如:CStockPacket sp; 在对类的成员变量和成员函数定义时,要加以分类,并界定相应的存取权限(参见表二:类成员的分类描述)表二:类成员的分类描述分类描述存取权限(依实际应用而定)/ ConstructorsPublic/ Attri
10、butesPrivate/ Operations(对于com组件是/Methods)/ OverridablesProtected/ Implementation2.1.7 结构命名规则 结构的原型采用组合词的方式定义,并且全部采用大写字符的形式。typedef struct tagStockTrans DWORD dwOpen; . STOCKTRANS; 结构的实例变量,采用小写首字母缩写的方式定义,如:STOCKTRANS st;2.1.8 语句构造规则一般性的原则:简单而直接,尽量避免出现难懂的技巧型代码。为追求效率而出现的技巧型代码,必须加上足够详细的注释。对以下的规则不做硬性规定,
11、可酌情考虑: 一个函数/过程的代码行数控制在60行(A4打印纸可打印的行数)以内。 尽量避免复杂的测试条件。 避免使用过深的(3级以上)循环或条件嵌套,必要时可采用goto语句。 循环或条件中的语句块控制在60行以内。 利用括号使逻辑表达式或算术表达式的运算次序清晰直观。2.1.9 书写格式规则一行一条语句,赋值语句可例外,如:i = 0, j = 1, k = 2;层次结构清晰明显: 与各占一行。所在的列与其前一行语句对齐;所在的列与对应的对齐。之间的语句相对缩进一个Tab键(设为4个空格字符)。 注释与相关的代码首列对齐。空行和空格 一组相关的函数/过程间以一个空行分隔;组间两个空行。 行内注释(/)部分与语句间以空格或Tab分隔,数量酌情。 多个函数参数或测试条件间用一个空格分隔。2.1.10 注释规则2.1.10.1 序言性注释在模块开始处简要描述模块的功能、主要算法、接口特点、重要数据等的解释性说明。 源程序(.cpp, .h etc)文件的开始处的格式(行宽80列以内):/=/ 文件名称: Optim
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1