标识符命名规则和命名风格
小编在这里介绍一下通用的命名规则和自己写程序的命名风格。
目录
为什么要命名?
基本命名规则
两种常用的命名方法
Visual Studio关于命名的改动
为什么要命名?
因为计算机是傻乎乎的,只知道0和1,数据放进去给它分配位置也只能用0和1来表示。数据都是存储在计算机内存中,给数据地址起一个名字,计算机方便找到该数据的位置和引用数据。
这里举个形象的例子:
计算机长长的内存条(内存空间)相当于一个酒店,每个房间就相当于内存单元。旅客就相当于要存入的数据,旅客只要有房间有空位就住进去,所以说要找到旅客所在的位置十分麻烦。这里可以给房间命名,比如说501,402……要找到旅客只需要去旅客住的房间查找就行了。那么给房间命名就显得尤其重要,而且房间名不能重复,还要一目了然。
基本命名规则
首先我们先来回顾一下程序设计语言通用的命名规则:
1.只能含有字母、数字和下划线三种元素。
2.以字母或下划线开头,不能以数字开头(第一个字符必须是字母或者下划线)。
3.不能与系统关键字重名(关键字就是系统已经使用过的名称)。
4.命名可以无限长,但命名要有效,有效位数因系统而异。C语言规定标识符前32位字符有效,如果前32位相同,后面位有区别,系统会认为两者相同。
5.命名区分大小写(a和A认为是不同字符)。
这就好比国家对于给孩子起名字也有规定:
1.姓名不得损害国家或者民族尊严。
2.不得违背民族良俗。
3.不得容易引起公众不良反应或者误解。
4.除使用民族文字或者书写、译写汉字的以外,姓名用字应当在两个汉字以上、六个汉字以下。比如:丈夫姓郑,老婆姓付,他们就可以给孩子取名“郑付贝克汉姆”。
5.姓名不得使用或者含有已简化的繁体字、字母、数字、符号。
……
还有不能跟哥哥起同一个名字……
比如说:
合法标识符:She,_520_,love,SUM,_Std
非法标识符:520,int,class,Std-inform,<-0-0->,:=
注意标识符命名规范之后,我们更需要注意命名风格。
这就好比他叫李青山,你叫李狗蛋,命名不太好听,或者很多叫张三,李四等大众名。
有很多人喜欢以a,b,c命名,a,b,c不够了就aa,bb,cc,abc。自己可能觉得简单,可是别人看起来很费劲,都不知道表示的是什么。取名字也是一件大事,要见名知意。
两种常用的命名方法
这里介绍两个最常用的命名方法:驼峰命名法和下划线命名法。
驼峰命名法包括:小驼峰命名法和大驼峰命名法(也叫帕斯卡命名法)。
小驼峰命名法:除第一个单词之外,其他单词首字母大写,例如:myFirstName
、myLastName
。常用于变量名,函数名。
大驼峰命名法:相比小驼峰法,大驼峰法把第一个单词的首字母也大写了,例如:public class DataBaseUser
。常用于类名,属性,命名空间等。
下划线命名法:名称中的每一个逻辑断点都用一个下划线来标记,例如:print_employee。
即每个单词中间用下划线隔开。
小编本人使用最多的就是大驼峰命名法和下划线命名法。
小编还有一些命名习惯:
1.宏定义常量#define一般全部大写,比如#define MAX_SIZE 50
2.typedef构造的ADT(自定义的抽象数据类型),一般使用大驼峰命名法,比如typedef long long ElemType;
3.命名空间名用下划线命名法,比如:namespace LinkList_Space
4.ADT变量一般全部小写,比如ElemType e;
5.函数名使用大驼峰命名法,前面是方法,后面加操作对象,比如:ElemType GetDataList(LinkList L, Num n);GetData是获取数据,而List是对List(表)操作。
下面截取了小编的代码风格:
#include "StdFile.h"namespace LinkList_Space
{typedef struct Node{ElemType data;struct Node* next;}Node, * LinkList;typedef Node* Position;//初始化链表void InitList(LinkList* L){*L = (LinkList)malloc(sizeof(Node));(*L)->next = NULL;}//创建链表LinkList CreateList(Num n = 20, ElemType Max = 100){Num i;Position node;LinkList L;InitList(&L);for (i = 1; i <= n; i++){node = (Node*)malloc(sizeof(Node));srand((unsigned)time(NULL) + (unsigned)rand());node->data = rand() % Max + 1;node->next = L->next;L->next = node;}return L;}
}
Visual Studio关于命名的改动
下面补充一些基于Visual Studio命名的新增内容:
划重点:Visual Studio2019之后,可以使用UTF-8编码命名标识符了!
下面请看代码:
#include <iostream>
#include <string>using namespace std;class 学生
{
public:string 姓名;int 年龄 = 24;bool 单身;
};int main()
{int の = 1;int 我爱你 = 520;const float 坤 = 2.5;string 只因 = "鸡";学生 我;我.姓名 = "Liszt";我.单身 = true;
}
这里用中文命名完全合法,当然也支持日文,韩文等其他国家的文字。
那是不是说明用中文标识符真的那么方便呢?
这里还是看个人习惯,如果对中文敏感,那么这次的改动对你的意义重大。
这里我们还定义了一个常量,但是在定义后赋值修改值会报错,下次分享有关const的用法。
标识符命名规则和命名风格相关推荐
- 标识符的命名规则和命名规范
IdentifierTest.java /*1.在java程序当中,使用editplus工具进行代码编写的时候,有一些单词是蓝色,有的是红色,有的是绿色,有的是黑色,有的是紫色,有的是粉色...... ...
- Java标识符的命名规则和命名规范
一.Java标识符的命名规则 1.Java中的标识符只能使用字母大小写.数字0-9.美元符号$.下划线_ 2.Java中的标识符不能使用关键字.保留字.特殊值,例如class.viod.public. ...
- javascript 变量的命名规则和命名规范
变量的命名规则和命名规范 - 规则: 必须遵守的,不遵守就是错 一个变量名称可以由 数字.字母(a-zA-Z).英文下划线(_).美元符号($) 组成,如:userrAge, num01, _na ...
- JAVA里常见的命名规则和命名规范
目录 1.什么是标识符呢?标识符又可以标识什么呢? 2.命名规则和命名规范的区别 3.Java标识符命名规则 4.包名的命名规范 5.类名的命名规范 6.方法名与变量名的命名规范 俗话说&q ...
- 变量的命名规则和命名规范
变量的命名规则和命名规范 规则:(必须遵守的,不遵守就是错) 1.一个变量名称可以由数字.字母.下划线.美元符号($) 组成 2.严格区分大小写 3.不能由数字开头,不要使用中文汉字命名 4.不能是保 ...
- python文件命名规则-Python命名规则
使用内容审核Python版本SDK包,需要您配置Python开发环境.从Python官网下载并安装合适的Python版本.兼容Python2.6+以及Python3.x.推荐使用Python3.x版本 ...
- JAVA标识符命名规则及命名规范
文章目录 一.标识符可以标识什么 二.标识符是什么 三.标识符命名规则 四.标识符命名规范 一.标识符可以标识什么 标识符可以标识类名.方法名.变量名.接口名.常量名等. 二.标识符是什么 凡是程序员 ...
- 【详解】标识符命名规则及命名规范
标识符 凡是可以自己起名字的都叫做标识符.比如类名.变量名.包名.方法名.接口名等. 标识符命名规则 26个英文字母,0-9,_或$ 组成 数字不可以开头 不可使用关键字和保留字 不能包含空格,严格区 ...
- python中类的命名规则_python命名规则
1. 以一个下划线开头的标识符(_xxx),不能访问的类属性,但可通过类提供的接口进行访问,不会被语句 "from module import *" 语句加载 2. 以两个下划线开 ...
最新文章
- CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)
- SAP HANA中的存储过程(sql procedure)
- 如何检查JavaScript中的数字是否为NaN?
- android入门学习-天气预报app(一)
- Multipart/form-data POST文件上传详解
- 抢先试用ReSharper UnitRun™ 1.0
- 用好MySQL的21个好习惯!
- c语言long double位数,int long double 所占位数 和最大值
- ROS学习笔记01:安装ROS - 玩小海龟
- dbeaver导出excel文件_vue将数据导出为excel文件就是如此简单
- 条码软件如何自定义设置条形码尺寸
- 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件
- tableau的骑行路线地理数据可视化
- 愿天下有情人都是失散多年的兄妹 (25分)
- 接入层、汇聚层和核心层工业交换机怎么选?
- 设断点报错:Frames are not available
- Android开发中虚拟位置定位、应用双开、IP代理检测
- LeGo-LOAM激光雷达定位算法源码阅读(二)
- [jzoj 1273] 袁绍的刁难 {推理}
- anylogic系统动力java工具_AnyLogic Professional 8.7 最新授权
热门文章
- 【集合论】集合恒等式 ( 幂等律 | 交换律 | 结合律 | 分配率 | 德摩根律 | 吸收率 | 零律 | 同一律 | 排中律 | 矛盾律 | 余补律 | 双重否定定律 | 补交转换律 )
- TCM安全芯片服务器,服务器通信安全加密芯片
- python open3d点云可视化(本节会根据实际所用持续更新)
- vue项目 调用百度地图 BMap is not defined
- Vulnhub靶机:GEARS OF WAR_ EP#1
- zepto获取html内容,Zepto这样操作元素属性
- 工业机器人和协作机器人有什么区别?工业网关能用吗?
- ionic开发——图片加载失败或不存在时显示提示图片的解决方法
- 全国2023年自学考试下半年报考专业一览表
- java 8583报文解析_8583报文 55域JAVA的解析