变量命名总结

2023-05-16

我在编程的时候发现自己对变量的命名比较混乱,有时候命名无厘头也没有统一的规则,根本没有辨识性。故今天来对变量命名的技巧和原则做个总结,一是分享同大家学习,二也是勉励自己,编程路漫漫,定不是一朝促成,需要长久坚持与学习!

一. 命名法则

目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。

1. 驼峰命名法

命名法则:是指第一个单词小写·,从第二个单词开始每个单词首字母大写。
下面是驼峰命名法来命名的变量和函数的,如下:

studengName // 表示存放学生姓名的变量
deleteStudentName( ) // 表示删除学生姓名的函数

2. 匈牙利命名法

命名法则:属性_类型+对象描述,类型+对象描述
名字是以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词是对对象的描述,要指明变量的用途。
下面是用匈牙利命名法命名的变量,如:

g_cch : g_是属性描述,表示全局变量;c和ch分别是计数类型和字符类型,一起表示变量类型;这里忽略了对象描述。所以它表示一个对字符进行计数的全局变量
iCount :i 是整型 ,表示整型变量
szFileName: 用0结尾的字符串

  1. 属性部分:
g_全局变量
c_常量
m_c++类 成员变量
s_静态变量
  1. 类型部分
a数组 array
b布尔 boolean
i (通常用n )整型 int
sz字符串 string zero
l长整型 long int
ch(通常用c )字符 char
by字节 byte
d双精度浮点 double
p指针 point
fn函数 function
c(通常用cnt )计数
  1. 描述部分
Max最大
Min最小
Init初始化
T/Temp临时变量
Src源对象
Dest目的对象

3. 帕斯卡命名法

命名法则:每个单词的首字母大写

DisplayInfo();
Student :定义一个存放学生信息的类

4. 下划线命名法

命名规则:函数名中的每一个逻辑断点都有一个下划线来标记。

print_employee_paychecks();

二. 命名的基本原则

1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解
尽量采用采用英文单词或全部中文全拼表示,若出现英文单词和中文混合定义时,使用连字符“_”将英文与中文割开。较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。例如:temp->tmp、flag->标志寄存器、statistic->stat、increment->inc、message->msg等缩写能够被大家基本认可。

2. 命名中若使用特殊约定或缩写,则要有注释说明。
应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。

3. 自己特有的命名风格,要自始至终保持一致,不可来回变化。
个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。

4. 对于变量命名,禁止取单个字符(如i 、j 、k… ),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i 、j 、k 作局部循环变量是允许的。 变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。

5. 除非必要,不要用数字或较奇怪的字符来定义标识符。

6. 命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。

7. 在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。
对接口部分的标识符应该有更严格限制,防止冲突。 如可规定接口部分的变量与常量之前加上“模块”标识等。

8. 用正确的反义词组命名具有互斥意义的变量或函数等。

add / removebegin / end
create / destroyinsert / delete
first / lastget / release
increment / decrementput / get
add / deletelock / unlock
open / closemin / max
old / newstart / stop
next / previoussource / target
show / hidesend / receive
source / destinationcut / paste
up / down

示例如下:

int min_sum;
int max_sum;
add_user( );
delete_user( );

9.除了编译开关/ 头文件等特殊应用,应避免使用_EXAMPLE_TEST_ 之类以下划线开始和结尾的定义。

三. 变量名的命名规范

变量通常是使用匈牙利命名法则,也就是 变量名 = 变量类型(前缀)+ 英文单词(对象描述)

boolean 用b开头 bShow
int 用i开头 iCount
short int 用n开头 nStepCount
long int 用l开头 lSum
char 用c开头 cCount
unsigned char 用by开头
float 用f开头 fAvg
double 用d开头 dDeta
unsigned int(WORD) 用w开头 wCount
unsigned long int(DWORD) 用dw开头 dwBroad
字符串 用s开头 sFileName
用0结尾的字符串 用sz开头 szFileName

全局变量 = g_ + 变量类型(前缀)+ 英文单词(对象描述),如下:

g_iCount

静态变量 = s_ + 变量类型(前缀)+ 英文单词(对象描述),如下:

s_iCount

常量命名全部用大写,单词间用下划线隔开,如下:

MAX_STOCK_COUNT

const 常量 = c_+变量类型(前缀)+ 英文单词(对象描述);

c_sFileName

四.函数的命名规范

1.函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出函数完成的功能
遵循动宾结构的命名法则,即函数名 = 动词+名词;函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。函数名首字大写,若包含有两个单词的每个单词首字母大写。如果是OOP 方法,可以只有动词(名词是对象本身)。示例:

LONG GetDeviceCount(……);
void print_record( ) ;
int input_record( ) ;
unsigned char get_current_color( ) ;

2.避免使用无意义或含义不清的动词为函数命名。
如使用process、handle等为函数命名,因为这些动词并没有说明要具体做什么。

五.文件名的命名规范

文件名(包括动态库、组件、控件、工程文件等)的命名规范 文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母,严禁使用象file1,myfile之类的文件名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变量命名总结 的相关文章

  • 纯C语言创建(带与不带头节点)单链表、头插法、尾插法、删除、遍历、逆转

    include lt stdio h gt include lt stdlib h gt typedef struct Node int data struct Node next Node 创建带头结点的单链表 Node initNode
  • 关于pycharm依赖库 install to user‘s package directory 的排坑日记

    今天基于 unittest 写了一个接口自动化脚本 xff0c 右键 Run 没有问题 但是我想放到我本地的 jenkins xff0c 所以想先以 dos 命令试试 果不其然 xff0c 报错了 害 xff0c 开始排坑 xff08 报错
  • 【洛谷P4180】严格次小生成树

    题目大意 xff1a 给定一个 N 个顶点 xff0c M 条边的带权无向图 xff0c 求该无向图的一个严格次小生成树 引理 xff1a 有至少一个严格次小生成树 xff0c 和最小生成树之间只有一条边的差异 题解 xff1a 通过引理可
  • 有哪些ubuntu上的文件对比的可视化工具?

    在 Ubuntu 上进行文件对比的可视化工具有很多 xff0c 以下是其中一些常见的工具 xff1a Meld xff1a Meld 是一种图形化文件和文件夹比较工具 xff0c 它支持两个或三个文件的比较 Meld 可以高亮显示差异 xf
  • ant design vue pro 面包屑移至最顶上

    ant design vue pro 面包屑移至最顶上显示 xff0c 如图 操作如下 xff1a 1 在src layouts BasicLayout vue 中 lt pro layout 中加入如下代码 lt template v s
  • VMware中ubuntu系统出现花屏和蓝屏的解决方案

    VMware虚拟机中打开的ubuntu系统 xff0c 由于暴力关机或某些原因突然死机 xff0c 关闭VMware软件后 xff0c 再次启动ubuntu系统 xff0c 进入后出现花屏和蓝屏的现象 解决方案一 xff1a 在键盘上同时按
  • Qt多线程总结

    一 Qt下使用线程主要有两种方法 一种是传统的继承QThread类 xff0c 重写run方法 该方法已经落伍了 xff0c 主要原因线程不安全 xff0c 需要自己手动加锁 xff0c 比较麻烦 xff0c 所以推荐使用方法二 定义一个工
  • 关于 vue3运行报错Internal server error: [@vue/compiler-sfc] <script setup> cannot contain ES 的处理方法

    大致的意思就是 script setup 不能使用ES模块导出 其实问题就出在 xff0c 给官方给出的方法混用了 一种是 xff1a lt script gt 标签里面配置 setup 另一种是 xff1a export default
  • sublime text 4 4126 已测可用

    1 打开浏览器进入网站https hexed it 2 打开sublime text4安装目录选择文件sublime text exe 3 搜索80 78 05 00 0f 94 c1更改为c6 40 05 01 48 85 c9 第一个匹
  • docker安装的mysql8修改my.cnf,无法启动容器解决

    参考 xff1a docker修改mysql配置文件后 xff0c 无法启动mysql容器 super ye man的博客 CSDN博客 docker 启动的mysql 配置文件 新手上路 xff0c 使用docker容器必定会遇到一些坑
  • armbian取消休眠去屏保并安装中文输入法

    dpms显示器休眠设置 xff1a 开启 xff1a sudo xset dpms 1 1 2 取消 xff1a sudo xset dpms xset设置屏保 xff1a 设置10秒后进入屏保 xff1a sudo xset s 10 6
  • QT主界面卡死崩溃解决(5种方法)

    声明 本文来自转载 文章作者 张小飞 文章链接 https cryfeifei cn 2020 05 28 qt zhu jie mian qia si de jie jue fang an yi xie ju ti shi xian fa
  • 数字电路(三)最小项和最大项

    逻辑抽象和描述 把实际问题抽象成变量和逻辑函数根据逻辑函数绘制框图使用真值表或者自然语言描述函数表达式 最小项和最大项 最小项和最大项的定义SSOP和 sum 记法最大项 xff1a 下标和真值表行号一样 xff0c 进制转换值要取反 同一
  • 自己写库文件

    自己写库文件 在项目工程文件里写 h文件写在include文件夹里c文件写在src文件里面 在系统文件夹里面写 找到系统的库文件夹 xff08 在json文件里面找 xff09 在src文件夹里面添加h文件和c文件注意新建二级文件可能会出错
  • 数字电路(四)多级输出

    多级电路 什么是多级电路 xff1a 级数大于一个级的电路如何读电路的级数 xff1a 由外向里 xff0c 层层数多级电路的优缺点 xff1a 优点是可以减少门和输入的数量 xff0c 进而减少成本 xff0c 缺点是增加电路的延时如何得
  • echarts 饼图中间自定义显示内容

    做驾驶舱时 xff0c 使用到空心饼图中间显示自定义内容 xff0c 两种方式实现 1 title 进行定位 效果差点 2 graphic 查询 api后 xff0c 最为符合的使用 graphic 代码如下 xff0c 完美实现上图效果
  • 云服务器(一)基本操作

    xshell远程连接云服务器 乌班图 修改密码注意乌班图默认是禁止ssh远程登录的 xff0c 需要进行设置参考此处 VNC图形界面 添加防火墙规则 xff1a VNC使用的是TCP协议 默认端口5901远程ssh连接安装一些必备的包 xf
  • 小松的STM32教程(6)——ADC

    预备 学习目标 学会调用Get Adc Average函数会使能多个ADC通道 概述 ADC输入电压范围 xff1a 2 4V 3 6V xff0c 一般使用0V和3 3V 数据对齐 xff1a 16bit存放12bit的转换数据 xff0
  • 小松的STM32教程(14)——内部flash模拟eeprom

    为什么要用Flash来模拟EEPORM Flash更适合作为程序存储器 xff0c EEPROM更适合作为数据存储器 xff0c 存储大量数据的时候就需要使用EEPROM xff0c 廉价的MCU往往只有FLASH而没有EEPROM xff
  • Qt小项目(三):定时器和日历

    UI QTime和Qtimer类 类区别QTimer定时器类 xff0c 当时间溢出 xff08 记时超过定时区间 xff09 的时候 xff0c 就会发出timeout信号 xff0c 触发槽函数QTime时间类 xff0c 提供时分秒

随机推荐

  • stm32延时函数解读

    时钟树 寄存器 SysTick gt LOAD xff1a 计时器装载值 SysTick gt VAL 当前值 SysTick gt CTRL 控制寄存器 延时初始化函数 计算AHB时钟 span class token keyword v
  • 基于 ART-PI FMC驱动SDRAM

    引脚接线图 SDRAMGPIO解释FMC A0 5PF0 5地址线FMC A6 9PF12 15地址线FMC A10 12PG0 2地址线FMC D0 1PD14 15数据线FMC D2 3PD0 1数据线FMC D4 12PE7 15数据
  • 基于ART-PI SPI驱动W25Q128

    吐槽和避坑 弄spi弄了一天 xff0c 使用的开发板是art pi家的h750 xff0c 本来准备直接用rt thread studio生成的 xff0c 但是不知道怎么回事配置出的工程文件都有问题 xff0c 不是线程运行不了就是缺少
  • TT数鸭子-暴力(csp-t1模拟)

    题目 输入输出样例 xff1a 题解 xff1a 我们整个题就是使用暴力的方法进行运算 将每一只鸭子看作是十进制的数 xff0c 不断对每一位读取 xff08 采用对十整除和取余数的方法 xff09 我们对每一个鸭子都进行判断 如果满足这个
  • C++ 输入10个数字,找出最大值、最小值及其角标 的程序

    using namespace std int main int a 10 int max min int max n min n int i for i 61 0 i lt 10 i 43 43 cin gt gt a i max 61
  • CheckedListBox 当中项的状态改变

    首先 xff0c 说下我需要实现的功能 xff0c 就是把获得数据Id显示在CheckedListBox上 xff08 单击空白处不响应 xff09 xff0c 如果在CheckedListBox上勾选的项就加入到list集合中 xff0c
  • Windows 下使用 WSL 安装 Kali Linux 子系统

    Windows 下使用 WSL 安装 Kali Linux 子系统 前言操作流程开启 适用于 Linux 的 Windows 子系统 功能通过 Microsoft Store 安装修改安装路径设置用户名和密码安装工具 WSL1 和 WSL2
  • ArchLinux踩过的那些坑

    1 usb模塊有問題 usb3 0的U盤 43 usb2 0的電腦 裝不上 usb2 0的U盤 43 usb3 0的電腦 裝得上 2 沒有聲音 创建 etc asound conf或 HOME asoundrc xff0c 在里面添加 xf
  • Anaconda中,onnx和pil冲突,无法安装pil解决办法

    onnx和pil冲突 xff0c 无法安装pil解决办法 conda span class token function install span pil 失败 提示onnx和pil有conflict 执行如下命令即可 conda span
  • 笔记本电脑连接wifi显示无网络无法上网

    笔记本电脑连接wifi显示无网络无法上网 一 发现问题二 解决问题三 问题解决 一 发现问题 手机可以用wifi上网 xff0c 但笔记本电脑连接相同wifi却显示无internet不能上网 二 解决问题 1 打开设置点击 网络和inter
  • SystemVerilog基础笔记

    一 Training 1 数据类型 a 两态变量 xff1a bit byte 8bit shortint 16bit int 32bit longint 64bit shortreal相当于c的float 占32bit的内存空间 real
  • opencascade + QT5 开发环境设置(Windows系统下)

    先下载opencascade7 6 0 QT5 12 12 VS2017 或2019 xff0c 两者都行 的安装包 都需要在相应官网注册 xff0c 然后进行安装 根据安装提示 xff0c 依次点击下一步即可 安装完opencascade
  • C语言:通讯录的简单实现

    目录 前言 一 题目要求和设计思路 xff1a 1 主函数内 xff1a 1 gt 基础框架 xff1a 2 gt 需要定义的变量 2 头文件列表 1 gt 结构体contacts和结构体maillist 2 gt 定义常量 3 功能函数
  • YApi启动命令

    1 进入Yapi安装目录 yapi my yapi vendors 2 启动命令 pm2 start server app js watch
  • 算法设计题3.18-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版

    习题集完整源码部分 第3章 栈和队列 数据结构习题集 严蔚敏 吴伟民版 源码使用说明 链接 数据结构 xff08 严蔚敏 吴伟民版 xff09 课本源码 43 习题集解析使用说明 课本源码合辑 链接 数据结构 课本源码合辑 习题集全解析 链
  • Ansible的基本搭建安装与配置及各参数选项的作用

    Ansible简介 xff1a ansible是什么 xff1f ansible是自动化运维工具 自动化运维工具那么多 xff0c 比如 xff08 statstack xff0c puppet xff0c cfengine chef fu
  • Python在字符串中引用变量

    在字符串中加入变量有三种方法 xff1a 1 43 连字符 name 61 39 zhangsan 39 print 39 my name is 39 43 name 结果为 my name is zhangsan 2 字符 name 61
  • 废旧笔记本改造安装黑群晖打造私人NAS超级详细图文教程

    事情是这样的 在我们楼下居住了10年的租客搬走了 xff0c 我感到十分的悲伤 xff01 怀着沉重的心情到楼下去收拾空荡荡的房子 然后 在一个不起眼的柜子里发现了一台被丢弃的废旧联想笔记本 xff01 作为一个合格的垃圾佬 xff0c 怎
  • 二维数组中的查找(C语言实现)

    题目描述 在一个二维数组中 xff0c 每一行都按照从左到右递增的顺序排序 xff0c 每一列都按照从上到下递增的顺序排序 请完成一个函数 xff0c 输入这样的一个二维数组和一个整数 xff0c 判断数组中是否含有该整数 思考 xff1a
  • 变量命名总结

    我在编程的时候发现自己对变量的命名比较混乱 xff0c 有时候命名无厘头也没有统一的规则 xff0c 根本没有辨识性 故今天来对变量命名的技巧和原则做个总结 xff0c 一是分享同大家学习 xff0c 二也是勉励自己 xff0c 编程路漫漫