变量的命名
变量名称 =
作用域+类型+含义
| 作用域 | 命名 |
|---|---|
| 全局变量 | g_ |
| 类成员变量 | m_ |
| 静态变量 | s_ |
| 进程共享全局变量 | gg_ |
| 局部变量 | 无 |
| 类型 | 命名 |
|---|---|
| 指针 | p |
| 函数 | fn |
| 无效 | v |
| 句柄 | h |
| 长整型 | l |
| 布尔 | b |
| 浮点型 | f |
| 双字节 | dw |
| 字符串 | sz |
| 短整形 | n |
| 双精度浮点型 | d |
| 计数 | cnt |
| 单个字符 | ch |
| 整形 | i |
| 字节 | by |
| 字 | w |
| 无符号 | u |
| 句柄 | h |
| 窗口句柄 | hWnd |
| 含义开头 | 命名 |
|---|---|
| 最大 | Max |
| 最小 | Min |
| 初始化 | Init |
| 临时变量 | Temp |
| 源对象 | Src |
| 目标对象 | Dst |
举例
g_pfnUtf8ToUnicode
命名结构为: g_ + p + fn + Utf8ToUnicode
含义:这是一个名称为Utf8ToUnicode的全局 函数 指针
hWndShadowWater
命名结构为:无 + hWnd + ShadowWater
含义: 这是一个名称为ShadowWater的局部 窗口句柄
命名遵循原则
- 变量名长度遵循“
min-length && max-information”的原则 - 变量名直观且可以拼读,望文知意
- 命名规则尽量与所采用的操作系统或开发工具的风格保持一致
- 程序中不要出现仅靠大小写区分的相似的标识符
- 程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解
- 变量的名字应当使用“
名词”或者“形容词+名词” - 尽量不要使用全局变量
宏/常量/枚举/结构体全部使用大写的字母,用下划线分割单词- 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等
- 类名和函数名用大写字母开头的单词组合而成
- 类的实例变量名采用
类名的简写+含义构成 - 结构体定义时采用
typedef的方式定义,需同时定义结构体和结构体指针 - 类名必须以大写字母开头,且不能包含下划线
注释
文件注释
- 在新建一个文件时,需包含文件注释,示例如下:
每次修改之后,需要写下本次修改信息,示例如下:/ * * 文件名:[文件名] * 作者:〈版权〉 * 描述:〈描述〉 * 修改人:〈修改人〉 * 修改时间:YYYY-MM-DD * 修改内容:〈修改内容〉 * // * * 文件名:LogManager.java * 版权:周伯通 * 描述: WIN V200R002 WEBSMAP 通用日志系统 * 修改人:张三 * 修改时间:2001-02-16 * 修改内容:新增 * 修改人:李四 * 修改时间:2001-02-26 * 修改内容:。。。。。。 * 修改人:王五 * 修改时间:2001-03-25 * 修改内容:。。。。。。 * /
函数注释
- 函数的头部注释,建议包含的项为:函数名,功能,输入参数,输出参数,返回值,注意事项等, 举例如下:
/ * * 函数名:UnicodeToUtf8 * 作者:周伯通 * 描述:将Unicode字符数组转化为utf8字符数组输出 * 入参:szUnicodeArray: 带转化的Unicode字符串 * dwUtf8Buff: 转化出去的Utf8缓冲区的最大字符长度 * 出参:szUtf8Array: 转化完成的Utf8字符串存放地址 * 返回值: bRet: 转化成功为TRUE,失败为FALSE * 注意事项:当缓冲区长度不够时,将会设置错误码为DRM_ERROR_SMALLBUFFER * /
注释代码
- 当注释/修改功能代码时,需在被注释代码前面(不包含空行)记录注释原因, 举例如下:
注释多行代码时, 举例如下##Delete by 周伯通 2018-11-19 for 将上传日志功能另起Timer执行,见TimerProcUpload ##Modify by 周伯通 2018-11-19 for 将上传日志功能另起Timer执行,见TimerProcUpload/ * Delete by 周伯通 2018-11-19 for 将上传日志功能另起Timer执行,见TimerProcUpload 要注释的代码 要注释的代码 要注释的代码 Delete by 周伯通 2018-11-19 */ - 当代码被注释后,经过两个版本测试通过后,除非必要,否则需删除被注释的代码
函数的约定
函数的定义
- 函数的定义在申明和定义时都加上参数的
逻辑入参/逻辑出参标记,举例如下BOOL bRet UnicodeToUtf8(_In_ LPCTSTR szUnicodeArray, _Out_ LPTSTR szUtf8Array, _In_ DWORD dwUtf8BufferSize); - 函数中如果不会对参数进行写操作时,必须要在申明和定义时显式或隐式的添加
const关键字,举例如下://隐式 BOOL bRet UnicodeToUtf8(_In_ LPCTSTR szUnicodeArray, _Out_ LPTSTR szUtf8Array, _In_ DWORD dwUtf8BufferSize); //显式 BOOL bRet UnicodeToUtf8(_In_ const LPTSTR szUnicodeArray, _Out_ LPTSTR szUtf8Array, _In_ DWORD dwUtf8BufferSize);
8197

被折叠的 条评论
为什么被折叠?



