变量命名

列举一下我自己的一些写法

local_int_loop_count
global_int_data_count
local_bool_plug_insert_flag
global_bool_ble_connect_flag


函数命名

get_tick_number
set_tick_number






为了代码清晰易懂,通常变量名采用一些著名的命名规则,主要有Camel标记法,Pastal标记法和匈牙利标记法。

      Camel标记法采用首字母小写,接下来的单词都以大写字母开头的方法,如myName。

      Pastal标记法采用首字母大写,接下来的单词都以大写字母开头的方法,如MyName。

      匈牙利标记法是在Pastal标记法的基础上,变量名前面加上一个小写字母,或者小写字母的序列,以说明该变量的类型,如sMyName。

匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法,后面的例子里也会尽量遵守它和上面的代码风格。还是那句话,并不是要求所有的读者都要去遵守,但是希望读者作为一个现代的软件开发人员都去遵守它。

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_Servers
C       类或者结构体       CDocument,CPrintInfo
m_      成员变量           m_pDoc,m_nCustomers

VC常用前缀列表:

前缀    类型    描述例子
ch      char    8位字符 chGrade
ch      TCHAR   16位Unicode集字符 chName
b       BOOL    布尔变量 bEnable
n       int     整型 nLength
n       UINT    无符整型 nLength
w       WORD    16位无符号整型 wPos
l       Long    32位有符号整型 lOffset
dw      DWORD   32位无符号整型 dwRange
p       *       指针变量,内存模块指针(Ambient memory model point) pDoc
lp      Far*    长指针 lpDoc
lpsz    LPSTR   32位字符串指针 lpszName
lpsz    LPCSTR 32位常量字符串指针 lpszName
lpsz    LPCTSTR 32位Unicode集常量指针 lpszName
h       handle Windows对象句柄 hWnd
lpfn    (*fn)() 回调函数指针 Callback Far pointer to CALLBACK function lpfnAbort

匈牙利命名法

MFC、句柄、控件及结构的命名规范 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 hPaltte; CPalette* pPalette;
HRGN hRgn;        CRgn* pRgn;
HMENU hMenu;      CMenu* pMenu;
HWND hCtl;        CState* pState;
HWND hCtl;        CButton* pButton;
HWND hCtl;        CEdit* pEdit;
HWND hCtl;        CListBox* pListBox;
HWND hCtl;        CComboBox* pComboBox;
HWND hCtl;        CScrollBar* pScrollBar;
HSZ hszStr;      CString pStr;
POINT pt;         CPoint pt;
SIZE size;        CSize size;
RECT rect;        CRect rect;


一般前缀命名规范

前缀          类型实例
C    类或结构 CDocument,CPrintInfo
m_   成员变量 m_pDoc,m_nCustomers


变量命名规范

前缀 类型 描述实例
ch    char 8位字符 chGrade
ch    TCHAR 如果_UNICODE定义,则为16位字符 chName
b     BOOL 布尔值 bEnable
n     int 整型(其大小依赖于操作系统) nLength
n     UINT 无符号值(其大小依赖于操作系统) nHeight
w     WORD 16位无符号值 wPos
l     LONG 32位有符号整型 lOffset
dw    DWORD 32位无符号整型 dwRange
p     * 指针 pDoc
lp    FAR* 远指针 lpszName
lpsz LPSTR 32位字符串指针 lpszName
lpsz LPCSTR 32位常量字符串指针 lpszName
lpsz LPCTSTR 如果_UNICODE定义,则为32位常量字符串指针 lpszName
h     handle Windows对象句柄 hWnd
lpfn callback 指向CALLBACK函数的远指针

前缀 符号类型 实例 范围

IDR_ 不同类型的多个资源共享标识 IDR_MAIINFRAME 1~0x6FFF
IDD_ 对话框资源 IDD_SPELL_CHECK 1~0x6FFF
HIDD_ 对话框资源的Help上下文 HIDD_SPELL_CHECK 0x20001~0x26FF
IDB_ 位图资源 IDB_COMPANY_LOGO 1~0x6FFF
IDC_ 光标资源 IDC_PENCIL 1~0x6FFF
IDI_ 图标资源 IDI_NOTEPAD 1~0x6FFF
ID_   来自菜单项或工具栏的命令 ID_TOOLS_SPELLING 0x8000~0xDFFF
HID_ 命令Help上下文 HID_TOOLS_SPELLING 0x18000~0x1DFFF
IDP_ 消息框提示 IDP_INVALID_PARTNO 8~0xDEEF
HIDP_ 消息框Help上下文 HIDP_INVALID_PARTNO 0x30008~0x3DEFF
IDS_ 串资源 IDS_COPYRIGHT 1~0x7EEF
IDC_ 对话框内的控件 IDC_RECALC 8~0xDEEF


应用程序符号命名规范

Microsoft MFC宏命名规范名称类型

_AFXDLL 唯一的动态连接库(Dynamic Link Library,DLL)版本
_ALPHA   仅编译DEC Alpha处理器
_DEBUG   包括诊断的调试版本
_MBCS    编译多字节字符集
_UNICODE 在一个应用程序中打开Unicode
AFXAPI   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 *)相同,可以用来代替LPSTR

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode使用技巧——Ctrl+鼠标滚轮键使字体进行缩放

点击VSCode左下角的齿轮,进入设置 进入Extensions——》JSON——》Edit in settings.json 在json当中添加如下: "editor.mouseWheelZoom": true,

python 交互式可视化库_Python 交互式可视化库

Python 交互式可视化库 所属分类:中间件编程 开发工具:Python 文件大小:12843KB 下载次数:1 上传日期:2018-12-06 18:40:56 上 传 者:孤独的老张 说明: 一个 Python 交互式可视化库,…

OpenCV各版本差异与演化,从1.x到4.0

最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识: 新版本的…

python题库刷题训练软件_Python基础练习100题 ( 11~ 20)

刷题继续 上一期和大家分享了前10道题,今天继续来刷11~20 Question 11: Write a program which accepts a sequence of comma separated 4 digit binary numbers as its input and then check whether they are divisible by 5 or not. The numbers that are divisi…

如何学习计算机图形学

http://blog.csdn.net/szchtx/article/details/6916675转载于:https://www.cnblogs.com/ArcherHuang/p/6574560.html

shell for循环

weiqifaubuntu:~/qcom$ for i in $(seq 1 1 10) > do > echo "hello World" > done hello World hello World hello World hello World hello World hello World hello World hello World hello World hello World weiqifaubuntu:~/qcom$ 输入for i in $(s…

西门子s7-200解密软件下载_西门子S7-200/300/400通讯方式汇总,超级全面

1西门子 200 plc 使用 MPI 协议与组态王进行通讯时需要哪些设置?1)在运行组态王的机器上需要安装西门子公司提供的 STEP7 Microwin 3.2 的编程软件,我们的驱动需要调用编程软件提供的 MPI 接口库函数;2)需要将 MPI 通讯卡 CP5611 卡安装在计算机的插槽中&#xff0…

如何监控NVIDIA GPU 的运行状态和使用情况

设备跟踪和管理正成为机器学习工程的中心焦点。这个任务的核心是在模型训练过程中跟踪和报告gpu的使用效率。 有效的GPU监控可以帮助我们配置一些非常重要的超参数,例如批大小,还可以有效的识别训练中的瓶颈,比如CPU活动(通常是预处理图像)占…

进程和线程的本质和区别

进程是什么? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程…

HBase学习笔记——概念及原理

1.什么是HBase HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBas…

.bat是什么语言_简单说说当我们打开网页时,浏览器到底做了什么?

前言:为什么我们需要掌握浏览器的原理作为一名前端研发,平日里打交道最多的,就是各式各样的客户端。不论你是针对pc端还是移动端,甚至是专门在微信端做前端研发,都需要跟一样东西接触——浏览器。不知道你有没有留意过…

花书《深度学习》代码实现:02 概率部分:概率密度函数+期望+常见概率分布代码实现

1 概率 1.1 概率与随机变量 频率学派概率 (Frequentist Probability):认为概率和事件发⽣的频率相关。贝叶斯学派概率 (Bayesian Probability):认为概率是对某件事发⽣的确定程度,可以理解成是确信的程度。随机变量 (Random Variable)&…

内存泄露Lowmemorykiller分析

01 前言 最近疫苗事情非常火热,这件事情让我对刘强东有点刮目相看,我们需要更多的人关注曝光此类问题 02 正文 Android Kernel 会定时执行一次检查,杀死一些进程,释放掉内存。Low memory killer 是定时进行检查。Low memory killer 主要是通过进程的oom_adj 来判定进程的…

腾讯官网生成qq在线客服代码

http://jingyan.baidu.com/article/e2284b2b42ce8ce2e6118ddd.html转载于:https://www.cnblogs.com/diyunpeng/p/6576696.html

TabError: inconsistent use of tabs and spaces in indentation

本文使用PyCharm的格式化代码功能解决TabError: inconsistent use of tabs and spaces in indentation。 1、提出问题: 当把代码从别处复制进来PyCharm,然后运行报错:TabError: inconsistent use of tabs and spaces in indentation 2、 分…

python 默认参数_有趣的 Python 特性 3 | 当心默认可变参数这个大猪蹄子。

本文字数:1575 字阅读本文大概需要:4 分钟写在之前Python 提供了很多让使用者觉得舒服至极的功能特性,但是随着不断的深入学习和使用 Python,我发现其中存在着许多玄学的输出与之前预想的结果大相径庭,这个对于初学者来…

Linux内核模块编译

Linux内核模块是一种可被动态加载和卸载的可执行程序。通过内核模块可以扩展内核功能,内核模块通常用于设备驱动、文件系统等。如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。 内核空间中不止一个程序试图访问驱动程序模块,导致一个…

AI-无损检测方向速读:基于深度学习的表面缺陷检测方法综述

1 表面缺陷检测的概念 表面缺陷检测是机器视觉领域中非常重要的一项研究内容, 也称为 AOI (Automated optical inspection) 或 ASI (Automated surface inspection),它是利用机器视觉设备获取图像来判断采集图像中是否存在缺陷的技术。 1.1 传统检测的缺陷(非CNN)…

1016. 部分A+B (15)

1016. 部分AB (15) 正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A 3862767,DA 6,则A的“6部分”PA是66,因为A中有2个6。 现给定A、DA、B、DB,请编写程序计算PA…

【完美解决】RuntimeError: one of the variables needed for gradient computation has been modified by an inp

正文在后面,往下拉即可~~~~~~~~~~~~ 欢迎各位深度学习的小伙伴订阅的我的专栏 Pytorch深度学习理论篇实战篇(2023版)专栏地址: 💛Pytorch深度学习理论篇(2023版)https://blog.csdn.net/qq_39237205/category_12077968.html 💚Pyt…