1 数据类型
类型 类型描述 示例
u8 无符号的 8bit 字节 unsigned char byLetter -> u8 byLetter
u16 无符号的 16bit 整数 unsigned short wValue -> u16 wValue
u32 无符号的 32bit 整数 unsigned int dwValue -> u32 dwValue
u64 无符号的 64bit 整数 unsigned long long ullValue -> u64 fwValue
s8 有符号的 8bit 字节 signed char byLetter -> s8 byLetter
s16 有符号的 16bit 整数 signed short wValue -> s16 swValue
s32 有符号的 32bit 整数 signed int nValue -> s32 nvalue
s64 有符号的 64bit 整数 signed long long sllValue -> s64 sfwValue
BOOL 有符号的 32bit 整数 bool bIsValid -> BOOL bIsValid
BOOL32 有符号的 32bit 整数 bool bIsValid -> BOOL32 bIsValid
LPCSTR const 字符串指针 const char *pchName -> LPCSTR lpstrName
LPSTR 字符串指针 char *pchName -> LPSTR lpstrName
2 变量命名
2.1 规则
定义一个变量:类型 + 前缀
变量的命名规则:
(1) 对于全局变量,要求在变量前加 g_前缀,g 是 global 的缩写;
(2) 所有静态变量,包括全局的、局部的或类的静态变量都使用前缀 s_;
(3) 变量名采用匈牙利命名法([作用范围前缀(g_/m_)]+[公共前缀]+基本类型前缀+变量名),变量名最前有类型前缀(公共前缀和基本类型前缀),类型前缀后面是变量的含义,变量含义采用大小写结合的办法;
(4) 类的变量名应体现其功能含义和类型,采用类型加英文含义的命名规则,其前缀表示类的缩写(缩写原则上采用去元音方式),随后的每一单词(或单词缩写) 的首字母为大写,如 cstrName,cattrCellId。
2.2 前缀
表一:
前缀 类型 示例
b Boolean 布尔 BOOL bIsValidUser;
by Byte 字节 u8 byChannelType;
ch Char 字符 s8 chStartCode;
w 不带符号的16位整数 u16 wMsgLen;
dw 不带符号的32位整数 u32 dwTickCount;
fw 不带符号的64位整数 u64 fwTickCount;
sw 带符号的16位整数 s16 swUserNum;
n 带符号的32位整数 s32 nCountNum
sfw 带符号的64位整数 s64 sfwCountNum
f 单精度浮点数 float fBoxLen;
sz 以 NULL 终结的字符 s8 szUserName;
t 自定义类型 TPuFullInfo tPuFullInfo;
c class 类 CCmuCtrlApp cCtrlApp;
表二:
前缀 类型 示例
a 数组 s8 achBookName[20]
p 指针 u8 *pbyBuf;
t 自定义类型变量(例如:结构) TPuInfo tPuInfo;
em 枚举类型 EM_PU_STATUS emCurStatus;
aa 多维数组 int aaScoreInfo[100][3];
ap 存放指针的数组 s8 *apUserAddr[256];
at 存放自定义类型变量的数组 TPuInfo atPuInfo[MAX_NUM]
pa 指向数组的指针 s8 *paPuName;
pp 多维指针 s8 **ppbyAddrInfo;
pt 指向自定义类型的指针变量 TPuInfo *ptCurOperPuInfo;
pf 函数指针 int (*pfGetUnitSize)(int);
表三:
前缀 类型 举例
q queue queue qInstantMsg
dq deque deque dqMtInConf
vct vector vector vctCapInfoArray;
lst list List lstSpeakerApply
map map map mapDispInstantMsg
set set set setSubMtOnline
stk stack stack stkMtOrderSort
it iterator iterator itAllMtToCall
str std::string std::string strMtName
3 函数命名
函数的命名规则:(C++的函数名首字母建议大写)
(1) 函数名一般采用大小写字母结合的形式;
(2) 函数名的首字母一般情况下建议大写;
(3) 函数名中不同意义字段之间不要用下划线链接,而要把每个字段的首字母大写以示区分;
(4) 函数名的命名采用动宾或者宾动格式,但在一个模块内部只使用一种格式;
(5) 回调函数以“CB”开头;
(6) 专有名词和缩写按照习惯的大小写形式嵌入函数命中,不受第一条限制;
(7) 函数名的长度必须控制在 30 字符内,建议控制在 20 个字符之内;
(8) 对提供给大部分模块用的一些公用函数,如操作系统所提供的函数等,不在以上规定中;
(9) 具有互斥意义的变量或相反动作的函数,建议用反义词组命名。
示例:
void SendMsgToAllSubCmu(u16 wEvent, u8 * const pbyMsg = NULL, u16 wLen = 0);
void SendMsgToAllCmuExceptDescendant(u16 wEvent, u8 * const pbyMsg = NULL , u16 wLen = 0);
BOOL32 TransferMsgToOtherCmu(const CPduDevNo & tCmuNo, u16 wEvent, u8 * const pbyMsg = NULL);
void CB_CompressFrameInfo(u8 *pbyFrameBuf, void *pbyContext);