vc程序员命名规范
c 语言命名规则

c 语言命名规则(原创版)目录1.引言2.C 语言命名规则概述3.标识符的命名规则4.变量的命名规则5.函数的命名规则6.注释的命名规则7.结束语正文【引言】在编程语言中,C 语言是一种广泛使用的编程语言。
它被广泛应用于操作系统、嵌入式系统、游戏开发等领域。
了解 C 语言的命名规则对于编写清晰、易于维护的代码至关重要。
本文将详细介绍 C 语言的命名规则。
【C 语言命名规则概述】C 语言的命名规则主要涉及标识符、变量、函数和注释的命名。
其中,标识符是用于表示变量、函数、数组等的名称,它们需要遵循一定的命名规则。
【标识符的命名规则】在 C 语言中,标识符由字母(大小写均可)、数字和下划线组成。
但是,标识符不能以数字开头。
此外,C 语言中没有预先定义的关键字,因此,标识符可以与关键字相同,但这样可能会导致编译错误。
【变量的命名规则】变量是在程序中存储数据的容器。
在 C 语言中,变量的命名规则与标识符相同,可以包含字母、数字和下划线,但不能以数字开头。
同时,变量名应简洁明了,能够体现变量的用途。
【函数的命名规则】函数是 C 语言中用于实现特定功能的代码块。
函数的命名规则同样遵循标识符的命名规则,可以包含字母、数字和下划线,但不能以数字开头。
函数名应具有描述性,能够体现函数的功能。
【注释的命名规则】注释是程序员对代码的解释和说明,不会被编译器执行。
在 C 语言中,注释以“//”开头,可以包含任何字符。
注释的命名没有严格的规则,但为了保持代码的可读性,应使用简洁明了的语言。
【结束语】了解 C 语言的命名规则有助于编写出清晰、易于维护的代码。
vc命名规则

vc命名规则a Array 数组b BOOL (int) 布尔(整数)by Unsigned Char (Byte) 无符号字符(字节)c Char 字符(字节)cb Count of bytes 字节数cr Color reference value 颜色(参考)值cx Count of x (Short) x的集合(短整数) dw DWORD (unsigned long) 双字(无符号长整数)f Flags (usually multiple bit values) 标志(一般是有多位的数值)fn Function 函数g_ global 全局的h Handle 句柄i Integer 整数l Long 长整数lp Long pointer 长指针m_ Data member of a class 一个类的数据成员n Short int 短整数p Pointer 指针s String 字符串sz Zero terminated String 以0结尾的字符串tm Text metric 文本规则u Unsigned int 无符号整数ul Unsigned long (ULONG) 无符号长整数w WORD (unsigned short) 无符号短整数x,y x, y coordinates (short) 坐标值/短整数v void 空有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。
前缀类型例子g_ 全局变量g_ServersC 类或者结构体CDocument,CPrintInfom_ 成员变量m_pDoc,m_nCustomersVC常用前缀列表:前缀类型描述例子ch char 8位字符chGradech TCHAR 16位UNICODE类型字符chNameb BOOL 布尔变量bEnabledn int 整型(其大小由操作系统决定)nLengthn UINT 无符号整型(其大小由操作系统决定)nLengthw WORD 16位无符号整型wPosl LONG 32位有符号整型lOffsetdw DWORD 32位无符号整型dwRangep * Ambient memory model pointer 内存模块指针,指针变量pDoclp FAR* 长指针lpDoclpsz LPSTR 32位字符串指针lpszNamelpsz LPCSTR 32位常量字符串指针lpszNamelpsz LPCTSTR 32位UNICODE类型常量指针lpszNameh handle Windows对象句柄hWndlpfn (*fn)() 回调函数指针Callback Far pointer to CALLBACK function lpfnAbort Windows对象名称缩写:Windows对象例子变量MFC类例子对象HWND hWnd; CWnd* pWnd;HDLG hDlg; CDialog* pDlg;HDC hDC; CDC* pDC;HGDIOBJ hGdiObj; CGdiObject* pGdiObj;HPEN hPen; CPen* pPen;HBRUSH hBrush; CBrush* pBrush;HFONT hFont; CFont* pFont;HBITMAP hBitmap; CBitmap* pBitmap;HPALETTE hPalette; CPalette* pPalette;HRGN hRgn; CRgn* pRgn;HMENU hMenu; CMenu* pMenu;HWND hCtl; CStatic* pStatic;HWND hCtl; CButton* pBtn;HWND hCtl; CEdit* pEdit;HWND hCtl; CListBox* pListBox;HWND hCtl; CComboBox* pComboBox;VC常用宏定义命名列表:前缀符号类型符号例子范围IDR_ 标识多个资源共享的类型IDR_MAINFRAME 1~0x6FFFIDD_ 对话框资源(Dialog)IDD_SPELL_CHECK 1~ 0x6FFFHIDD_ 基于对话框的上下文帮助HIDD_SPELL_CHECK 0x20001~0x26FFIDB_ 位图资源(Bitmap)IDB_COMPANY_LOGO 1~0x6FFFIDC_ 光标资源(Cursor)IDC_PENCIL 1~0x6FFFIDI_ 图标资源(Icon)IDI_NOTEPAD 1~0x6FFFID_、IDM_ 工具栏或菜单栏的命令项ID_TOOLS_SPELLING 0x8000~0xDFFFHID_ 命令上下文帮助HID_TOOLS_SPELLING 0x18000~0x1DFFFIDP_ 消息框提示文字资源IDP_INVALID_PARTNO 8~0xDFFFHIDP_ 消息框上下文帮助HIDP_INVALID_PARTNO 0x30008~0x3DFFFIDS_ 字符串资源(String)IDS_COPYRIGHT 1~0x7FFFIDC_ 对话框内的控制资源IDC_RECALC 8~0xDFFFMicrosoft MFC宏命名规范名称类型_AFXDLL 唯一的动态连接库(Dynamic Link Library,DLL)版本_ALPHA 仅编译DEC Alpha处理器_DEBUG 包括诊断的调试版本_MBCS 编译多字节字符集_UNICODE 在一个应用程序中打开UnicodeAFXAPI MFC提供的函数CALLBACK 通过指针回调的函数库标识符命名法标识符值和含义u ANSI(N)或Unicode(U)d 调试或发行:D = 调试;忽略标识符为发行静态库版本命名规范库描述NAFXCWD.LIB 调试版本:MFC静态连接库NAFXCW.LIB 发行版本:MFC静态连接库UAFXCWD.LIB 调试版本:具有Unicode支持的MFC静态连接库UAFXCW.LIB 发行版本:具有Unicode支持的MFC静态连接库动态连接库命名规范名称类型_AFXDLL 唯一的动态连接库(DLL)版本WINAPI Windows所提供的函数Windows.h中新的命名规范类型定义描述WINAPI 使用在API声明中的FAR PASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型CALLBACK 使用在应用程序回调程序,如窗口和对话框过程中的FAR PASCAL的位置LPCSTR 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*)UINT 可移植的无符号整型类型,其大小由主机环境决定(对于Windows NT和Windows 9x为32位);它是unsigned int的同义词LRESULT 窗口程序返回值的类型LPARAM 声明lParam所使用的类型,lParam是窗口程序的第四个参数WPARAM 声明wParam所使用的类型,wParam是窗口程序的第三个参数LPVOID 一般指针类型,与(void *)相同,可以用来代替LPSTRMSDN中给出了一段遵守代码风格和匈牙利命名法的代码参考如下:1 #include “sy.h”2 extern int *rgwDic;3 extern int bsyMac;4 struct SY *PsySz(char sz[])6 {7 char *pch;8 int cch;9 struct SY *psy, *PsyCreate();10 int *pbsy;11 int cwSz;12 unsigned wHash=0;13 pch=sz;14 while (*pch!=0)15 wHash=wHash<>11+*pch++;16 cch=pch-sz;17 pbsy=&rgbsyHash[(wHash&077777)%cwHash];18 for (; *pbsy!=0; pbsy = &psy->bsyNext)19 {20 char *szSy;21 szSy= (psy=(struct SY*)&rgwDic[*pbsy])->sz;22 pch=sz;23 while (*pch==*szSy++)24 {25 if (*pch++==0)26 return (psy);27 }28 }29 cwSz=0;30 if (cch>=2)31 cwSz=cch-2/sizeof(int)+1;32 *pbsy=(int *)(psy=PsyCreate(cwSY+cwSz))-rgwDic;33 Zero((int *)psy,cwSY);34 bltbyte(sz, psy->sz, cch+1);35 return(psy);36 }。
VC变量命名规则

转载:vc软件开发规范--------------------------------------------------------------------------------一、程序风格:1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:bool(BOOL) 用b开头 bIsParentbyte(BYTE) 用by开头 byFlagshort(int) 用n开头 nStepCountlong(LONG) 用l开头 lSumchar(CHAR) 用c开头 cCountfloat(FLOA T) 用f开头 fAvgdouble(DOUBLE) 用d开头 dDetavoid(VOID) 用v开头 vV ariantunsigned int(WORD)用w开头 wCountunsigned long(DWORD) 用dw开头 dwBroadHANDLE(HINSTANCE)用h开头 hHandleDWORD 用dw开头 dwWordLPCSTR(LPCTSTR) 用str开头 strString用0结尾的字符串用sz开头 szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。
C_命名规范

.NET开发编程规范第1章程序的版式版式虽然不会影响程序的功能,但会影响可读性。
程序的版式追求清晰、美观,是程序风格的重要构成因素。
可以把程序的版式比喻为“书法”。
好的“书法”可让人对程序一目了然,看得兴致勃勃。
差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。
1.1 版本和版权声明版本和版权的声明写在文件的开头,包含内容如下:1、版权信息2、摘要3、当前版本4、作者5、修改作者6、完成日期7、版本历史信息例:在C#中代码注释这样写的好处是Visual Stuidio能够在编译的时候自动生成xml格式的注释文档。
1.2空行空行起着分隔程序段落的作用。
空行得体(不过多也不过少)将使程序的布局更加清晰。
空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。
所以不要舍不得用空行。
在每个类声明之后、每个函数定义结束之后都要加空行。
参见示例1-2(a)在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。
参见示例1-2(b )示例1-2(a) 函数之间的空行示例1-2(b) 函数内部的空行1.3 代码行(1)一行代码只做一件事情,如只定义一个变量,或只写一条语句。
这样的代码容易阅读,并且方便于写注释。
(2)if、for、while、do等语句自占一行,执行语句不得紧跟其后。
不论执行语句有多少都要加{}。
这样可以防止书写失误。
示例1-3(a)为风格良好的代码行,示例1-3(b)为风格不良的代码行。
示例1-3(a) 风格良好的代码行示例1-3(b) 风格不良的代码行【建议】尽可能在定义变量的同时初始化该变量(就近原则)如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。
如果引用了未被初始化的变量,可能会导致程序错误。
本建议可以减少隐患。
例如int width = 10; // 定义并初绐化widthint height = 10; // 定义并初绐化heightint depth = 10; // 定义并初绐化depth1.4 代码行内的空格(1)关键字之后要留空格。
CC++命名规范

CC++命名规范展开全文关于编成规范-命名规则的浅谈本命名取自“匈牙利”法,仅供参考。
数据类型的命名规则参考:定义类型:前缀类型类型描述示例占字节(Win32) 有效值取值范围b Boolena-布尔1Bit的标志bool bFlag 4 (TRUE/FALSE) (0x0 ~0x1)/* typedef int bool */-------------------------------------------------------------------------------------by Byte 字节无符号的8bit字节unsigned char byValue; 1 0 ~255 (0x0 ~0xFF) ch Char 字符有符号的8bit字节signed char chValue; 1 -128~127 (0x80~0x7F)-------------------------------------------------------------------------------------w 不带符号的Word字无符号的16bit整数unsigned short wValue; 2 0 ~65535 (0x0 ~0xFFFF) sw 带符号的16位整形数有符号的16bit整数signed short swValue; 2 -32768~32767 (0x8000~0x7FFF)-------------------------------------------------------------------------------------dw 不带符号的doubleword字无符号的32bit整数 unsigned int dwValue; 4 0 ~4294967295 (0x0 ~0xFFFFFF FF)n 带符号的32位整形数有符号的32bit整数signed int nValue; 4 -2147483648~2147483647 (0x80000000~0x7FFFFFFF) -------------------------------------------------------------------------------------f 单精度浮点数单精度浮点数 float fValue; 4d 双精度浮点数双精度浮点数 double dValue; 8-------------------------------------------------------------------------------------p 指针(pointer) 指针 char *pchName; 4pc const指针(pointer) const指针const char *pcchName; //* unsigned char *pbyData; / unsigned short *pwData; */ /* const int *pcnData; / unsigned int *pdwData; */-------------------------------------------------------------------------------------t typedef自定义类型struct结构体等类型 TNameInfo tName; /pt 自定义类型指针struct结构体指针等 PTNameInfo *ptName; /-------------------------------------------------------------------------------------a Array数组数组 char achName[20]; /aa 二位Array数组多位数组unsigned char aabyName[4][2]; /-------------------------------------------------------------------------------------ap 存放指针的数组存放指针的数组 char *apchName[2]; /pa 指向数组的指针指向数组的指针unsigned char *pabyName; /-------------------------------------------------------------------------------------em enum枚举类型枚举类型 EM_NAME emName; 4c class类class 类 CName cName; /-------------------------------------------------------------------------------------pf 函数指针(pointer func) 函数指针typedef int (*pfMsgFunc)(int type);-------------------------------------------------------------------------------------s_ 静态变量(static) 静态变量 static int s_nValue;g_ 全局变量(global) 全局变量 int g_nValue;m_ 类的数据成员(member) 类的数据成员 int m_nValue;函数名的命名规则参考:1. 函数名的首字母建议大写,函数名采用大小写字母结合的形式int GetMaxValue(void){do someting;}2. 定义函数时,若函数无返回值,请冠以void 函数名格式;若函数无参数,请在参数中写入void格式;void InitData(void){do someting;}1. 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。
C语言的命名规范与代码风格

C语言的命名规范与代码风格引言在编写C语言程序时,一个良好的命名规范和代码风格能够提高代码的可读性和可维护性。
本文将介绍一些常用的C语言命名规范和代码风格,帮助开发者编写规范、易读、易维护的代码。
命名规范1. 变量和函数命名•使用有意义的命名,能够准确描述变量或函数的用途。
•变量名应该使用小写字母,单词之间使用下划线分隔,例如:first_name。
•函数名首字母小写,后续单词首字母大写,采用驼峰命名法,例如:getUserInfo()。
2. 常量命名•常量名应全部大写,单词之间使用下划线分隔,例如:MAX_NUM。
•常量名应该具有描述性,能够清晰表达常量的含义。
3. 宏定义命名•宏定义命名应全部大写,单词之间使用下划线分隔,例如:#define PI3.1415926。
•宏定义命名应具有描述性,能够清晰表达宏定义的含义。
4. 结构体和枚举命名•结构体和枚举类型命名应使用驼峰命名法,首字母小写,例如:personInfo。
•枚举值命名应全部大写,单词之间使用下划线分隔,例如:STATUS_OK。
5. 文件和目录命名•文件名应使用小写字母,单词之间使用下划线分隔,例如:my_utils.c。
•目录名应使用小写字母,单词之间使用下划线分隔,例如:my_module。
6. 注释•对于每个变量或函数,在其声明之前应添加注释,描述其作用和用法。
•注释应以双斜线//开始,单行注释使用//后跟注释内容,多行注释使用/*和*/将注释内容包裹起来。
代码风格1. 缩进和空格•使用四个空格进行缩进。
•在运算符前后添加空格,增加代码的可读性。
2. 大括号•在控制语句(如if语句、for循环等)的执行块前后需要加上大括号,即使代码块只有一行。
3. 行数限制•一行最多不超过80个字符。
4. 函数和语句•每个函数之间应空出一行。
•每个语句之间也应空出一行,提高代码可读性。
5. 条件语句•在条件语句中,将常量放在前面,变量放在后面,避免将变量赋值写成判断等号。
C_命名规范
lwhsbVolume
lwvsbYear
mpsSession mciVideo mvwPeriod msgClients mstFirst optGender picVGA clpToolbar rdTitles rtfReport shpCircle
Slider Spin StatusBar staDateTime SysInfo TabStrip Text box txtLastName Timer Toolbar TreeView treOrganization UpDown updDirection Vertical scroll bar
6.自定义的异常以Exception结尾 public class AppException : Exception { } 7.方法的命名.一般将其命名为动宾短语. ShowDialog() CreateFile() GetPath() 8.代码的缩进.要用Tab,而不要用space. 9.局部变量的名称要有意义.不要用x,y,z等等. string userName 10.所有的成员变量声明在类的顶端,用一个换行把它和方法分开. 11.用有意义的名字命名namespace,如:产品名、公司名. 12.建议局部变量在最接近使用它时再声明. 13.使用某个控件的值时,尽量命名局部变量. 14.把引用的系统的namespace和自定义或第三方的分开. 15.文件名要能反应类的内容,最好是和类同名,一个文件中一个类. 16.目录结构中要反应出namespace的层次. 17.大括号"{"要新起一行. public class AuthorAttribute : Attribute {
推荐:C#命名规范12条
推荐:C#命名规范12条编码规范对于程序员⽽⾔尤为重要,有以下⼏个原因:1.⼀个项⽬的⽣命周期中,80%的花费在于维护;2.⼏乎没有任何⼀个项⽬,在其整个⽣命周期中,均由最初的开发⼈员来维护;3.命名规范可以改善项⽬的可读性,可以让程序员尽快⽽彻底地理解新的代码;4.如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰⽆误,⽐如你已构建的其它任何产品。
为了执⾏规范,每个软件开发⼈员必须⼀致遵守编码规范。
常见的命名规则我们都知道:Pascal 规则:每个单词开头的字母⼤写(如 TestCounter).Camel 规则:除了第⼀个单词外的其他单词的开头字母⼤写. 如. testCounter.Upper 规则:仅⽤于⼀两个字符长的常量的缩写命名,超过三个字符长度应该应⽤Pascal规则例如:public class Math{public const PI = ...public const E = ...public const FeigenBaumNumber = ...}针对C#开发者,整理了15条命名规范!1.类命名规则类名应该为名词及名词短语,尽可能使⽤完整的词.使⽤Pascal规则不要使⽤类前缀 - 不要使⽤下划线字符 (_)。
有时候需要提供以字母 I 开始的类名称,虽然该类不是接⼝。
只要 I 是作为类名称组成部分的整个单词的第⼀个字母,这便是适当的。
例如,类名称 IdentityStore 就是适当的。
在适当的地⽅,使⽤复合单词命名派⽣的类。
派⽣类名称的第⼆个部分应当是基类的名称。
例如,ApplicationException 对于从名为Exception 的类派⽣的类是适当的名称,原因是 ApplicationException 是⼀种 Exception。
请在应⽤该规则时进⾏合理的判断。
例如,Button 对于从 Control 派⽣的类是适当的名称。
尽管按钮是⼀种控件,但是将 Control 作为类名称的⼀部分将使名称不必要地加长。
C语言编程规范—命名规则
C语⾔编程规范—命名规则C是⼀门朴素的语⾔,你使⽤的命名也应该这样。
与Modula-2和Pascal程序员不同,C程序员不使⽤诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字。
C程序员应该叫它“tmp”,这写起来更简单,也不会更难懂。
然⽽,当⾯对复杂情况时就有些棘⼿,给全局变量取⼀个描述性的名字是必要的。
把⼀个全局函数叫做“foo”是⼀种⽬光短浅的⾏为。
全局函数也⼀样,如果你有⼀个统计当前⽤户个数的函数,应当把它命名为“count_active_user()”或者简单点些的类似名称,不应该命名为“cntusr()”。
3.1 三种流⾏的命名法则⽬前,业界共有四种命名法则:驼峰命名法、匈⽛利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流⾏的命名法。
(1)驼峰命令法。
正如它的名称所表⽰的那样,是指混合使⽤⼤⼩写字母来构成变量和函数的名字。
例如,下⾯是分别⽤骆驼式命名法和下划线法命名的同⼀个函数:printEmployeePaychecks();print_employee_paychecks();第⼀个函数名使⽤了驼峰命名法,函数名中的每⼀个逻辑断点都有⼀个⼤写字母来标记。
第⼆个函数名使⽤了下划线法,函数名中的每⼀个逻辑断点都有⼀个下划线来标记。
驼峰命名法近年来越来越流⾏了,在许多新的函数库和Microsoft Windows这样的环境中,它使⽤得当相多。
另⼀⽅⾯,下划线法是C出现后开始流⾏起来的,在许多旧的程序和UNIX这样的环境中,它的使⽤⾮常普遍。
(2)匈⽛利命名法。
⼴泛应⽤于象Microsoft Windows这样的环境中。
Windows 编程中⽤到的变量(还包括宏)的命名规则为匈⽛利命名法,这种命名技术是由⼀位能⼲的 Microsoft 程序员查尔斯-西蒙尼(Charles Simonyi) 提出的。
匈⽛利命名法通过在变量名前⾯加上相应的⼩写字母的符号标识作为前缀,标识出变量的作⽤域、类型等。
msvc 名称修改规则
msvc 名称修改规则Microsoft Visual C++ (MSVC) 名称修改规则Microsoft Visual C++ (MSVC) 名称修改规则定义了如何将程序中的变量名、函数名、类名等进行修改,以避免与其他库或模块的名称冲突。
一、变量名命名规则:1、变量名的第一个字母必须为小写字母。
2、变量名中的每个单词的首字母必须大写,其余部分必须小写。
3、变量名称不能包含空格,并且不能使用下划线或破折号。
4、变量名称不能包含特殊字符,包括@,#,$,&,%,^,*,+,=,~,|,<,>,/,,?,!等。
5、变量名称不能以数字开头。
6、变量名称不能与MSVC中的内置宏名称、关键字或系统定义的变量名冲突。
二、函数名命名规则:1、函数名的第一个字母必须为小写字母。
2、函数名中的每个单词的首字母必须大写,其余部分必须小写。
3、函数名称与变量名称的其他命名规则相同。
三、类名命名规则:1、类名的第一个字母必须为大写字母。
2、类名中的每个单词的首字母必须大写,其余部分必须小写。
3、类名称与变量名称的其他命名规则相同。
四、枚举类型命名规则:1、枚举名称的第一个字母必须为大写字母。
2、枚举名称中的每个单词的首字母必须大写,其余部分必须小写。
3、枚举名称不能包含空格,并且不能使用下划线或破折号。
4、枚举名称不能包含特殊字符,包括@,#,$,&,%,^,*,+,=,~,|,<,>,/,,?,!等。
5、枚举名称不能以数字开头。
6、枚举名称不能与MSVC中的内置宏名称、关键字或系统定义的枚举名冲突。
总之,MSVC 名称修改规则旨在帮助开发人员设计出有效而不易冲突的程序代码名称,以达到程序可靠性和可维护性的目的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:bool(BOOL) 用b开头bIsParentbyte(BYTE) 用by开头byFlagshort(int) 用n开头nStepCountlong(LONG) 用l开头lSumchar(CHAR) 用c开头cCountfloat(FLOAT) 用f开头fAvgdouble(DOUBLE) 用d开头dDetavoid(VOID) 用v开头vVariantunsigned int(WORD)用w开头wCountunsigned long(DWORD) 用dw开头dwBroadHANDLE(HINSTANCE)用h开头hHandleDWORD 用dw开头dwWordLPCSTR(LPCTSTR) 用str开头strString用0结尾的字符串用sz开头szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:对一重指针变量的基本原则为:“p”+变量类型前缀+命名如一个float*型应该表示为pfStat对多重指针变量的基本规则为:二重指针:“pp”+变量类型前缀+命名三重指针:“ppp”+变量类型前缀+命名......③、全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)④、静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst,即:变量名=s_+变量类型+变量的英文意思(或缩写)⑤、成员变量用m_开头,如一个长型成员变量定义为m_lCount;即:变量名=m_+变量类型+变量的英文意思(或缩写)⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。
并且要求用大写。
如:enum cmEMDAYS{EMDAYS_MONDAY;EMDAYS_TUESDAY;……};⑦、对struct、union、class变量的命名要求定义的类型用大写。
并要加上前缀,其内部变量的命名规则与变量命名规则一致。
结构一般用S开头如:struct ScmNPoint{int nX;//点的X位置int nY; //点的Y位置};联合体一般用U开头如: union UcmLPoint{long lX;long lY;}类一般用C开头如:class CcmFPoint{public:float fPoint;};对一般的结构应该定义为类模板,为以后的扩展性考虑如:templateclass CcmTVector3d{public:TYPE x,y,z;};⑧、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。
如:#define CM_FILE_NOT_FOUND CMMAKEHR(0X20B) 其中CM表示类别。
⑨、对const 的变量要求在变量的命名规则前加入c_,即:c_+变量命名规则;例如:const char* c_szFileName;2、函数的命名规范:函数的命名应该尽量用英文表达出函数完成的功能。
遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。
例如:long cmGetDeviceCount(……);3、函数参数规范:①、参数名称的命名参照变量命名规范。
②、为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。
③、为了便于其他程序员识别某个指针参数是入口参数还是出口参数,同时便于编译器检查错误,应该在入口参数前加入const标志。
如:……cmCopyString(const char * c_szSource, char * szDest)4、引出函数规范:对于从动态库引出作为二次开发函数公开的函数,为了能与其他函数以及Windows的函数区分,采用类别前缀+基本命名规则的方法命名。
例如:在对动态库中引出的一个图象编辑的函数定义为imgFunctionname(其中img为image缩写)。
现给出三种库的命名前缀:①、对通用函数库,采用cm为前缀。
②、对三维函数库,采用vr为前缀。
③、对图象函数库,采用img为前缀。
对宏定义,结果代码用同样的前缀。
5、文件名(包括动态库、组件、控件、工程文件等)的命名规范:文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母,严禁使用象file1,myfile之类的文件名。
三、注释规范:1、函数头的注释对于函数,应该从“功能”,“参数”,“返回值”、“主要思路”、“调用方法”、“日期”六个方面用如下格式注释://程序说明开始//================================================================// // 功能:从一个String 中删除另一个String。
// 参数:strByDelete,strToDelete// (入口)strByDelete: 被删除的字符串(原来的字符串)// (出口)strToDelete: 要从上个字符串中删除的字符串。
// 返回:找到并删除返回1,否则返回0。
(对返回值有错误编码的要// 求列出错误编码)。
// 主要思路:本算法主要采用循环比较的方法来从strByDelete中找到// 与strToDelete相匹配的字符串,对多匹配strByDelete// 中有多个strToDelete子串)的情况没有处理。
请参阅:// 书名......// 调用方法:......// 日期:起始日期,如:2000/8/21.9:40--2000/8/23.21:45//================================================================// 函数名(……)//程序说明结束①、对于某些函数,其部分参数为传入值,而部分参数为传出值,所以对参数要详细说明该参数是入口参数,还是出口参数,对于某些意义不明确的参数还要做详细说明(例如:以角度作为参数时,要说明该角度参数是以弧度(PI),还是以度为单位),对既是入口又是出口的变量应该在入口和出口处同时标明。
等等。
②、函数的注释应该放置在函数的头文件中,在实现文件中的该函数的实现部分应该同时放置该注释。
③、在注释中应该详细说明函数的主要实现思路、特别要注明自己的一些想法,如果有必要则应该写明对想法产生的来由。
对一些模仿的函数应该注释上函数的出处。
④、在注释中详细注明函数的适当调用方法,对于返回值的处理方法等。
在注释中要强调调用时的危险方面,可能出错的地方。
⑤、对日期的注释要求记录从开始写函数到结束函数的测试之间的日期。
⑥、对函数注释开始到函数命名之间应该有一组用来标识的特殊字符串。
如果算法比较复杂,或算法中的变量定义与位置有关,则要求对变量的定义进行图解。
对难以理解的算法能图解尽量图解。
2、变量的注释:对于变量的注释紧跟在变量的后面说明变量的作用。
原则上对于每个变量应该注释,但对于意义非常明显的变量,如:i,j等循环变量可以不注释。
例如:long lLineCount //线的根数。
3、文件的注释:文件应该在文件开头加入以下注释://///////////////////////////////////////////////////////////////////// 工程: 文件所在的项目名。
// 作者:**,修改者:**// 描述:说明文件的功能。
// 主要函数:…………// 版本: 说明文件的版本,完成日期。
// 修改: 说明对文件的修改内容、修改原因以及修改日期。
// 参考文献:....../////////////////////////////////////////////////////////////////////为了头文件被重复包含要求对头文件进行定义如下:#ifndef __FILENAME_H__#define __FILENAME_H__其中FILENAME为头文件的名字。
4、其他注释:在函数内我们不需要注释每一行语句。
但必须在各功能模块的每一主要部分之前添加块注释,注释每一组语句,在循环、流程的各分支等,尽可能多加以注释。
其中的循环、条件、选择等位置必须注释。
对于前后顺序不能颠倒的情况,建议在注释中增加序号。
例如:在其他顺序执行的程序中,每隔3—5行语句,必须加一个注释,注明这一段语句所组成的小模块的作用。
对于自己的一些比较独特的思想要求在注释中标明。
四、程序健壮性:1、函数的返回值规范:对于函数的返回位置,尽量保持单一性,即一个函数尽量做到只有一个返回位置。
(单入口单出口)。
要求大家统一函数的返回值,所有的函数的返回值都将以编码的方式返回。
例如编码定义如下:#define CM_POINT_IS_NULL CMMAKEHR(0X200)::建议函数实现如下:long 函数名(参数,……){long lResult; //保持错误号lResult=CM_OK;//如果参数有错误则返回错误号if(参数==NULL){lResult=CM_POINT_IS_NULL;goto END;}……END:return lResult;}2、关于goto的应用:对goto语句的应用,我们要求尽量少用goto语句。
对一定要用的地方要求只能向后转移。
3、资源变量的处理(资源变量是指消耗系统资源的变量):对资源变量一定赋初值。
分配的资源在用完后必须马上释放,并重新赋值。
4、对复杂的条件判断,为了程序的可读性,应该尽量使用括号。
例:if(((szFileName!=NULL)&&(lCount>=0)))||(bIsRead==TRUE))五、可移植性:1、由于C语言的移植性比较好,所以对算法函数要求用C代码,不能用C++代码。