小编在这里介绍一下通用的命名规则和自己写程序的命名风格。

目录

为什么要命名?

基本命名规则

两种常用的命名方法

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。自己可能觉得简单,可是别人看起来很费劲,都不知道表示的是什么。取名字也是一件大事,要见名知意。

两种常用的命名方法

这里介绍两个最常用的命名方法:驼峰命名法下划线命名法

驼峰命名法包括:小驼峰命名法大驼峰命名法(也叫帕斯卡命名法)。

小驼峰命名法:除第一个单词之外,其他单词首字母大写,例如:myFirstNamemyLastName。常用于变量名,函数名。

大驼峰命名法:相比小驼峰法,大驼峰法把第一个单词的首字母也大写了,例如: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的用法。

标识符命名规则和命名风格相关推荐

  1. 标识符的命名规则和命名规范

    IdentifierTest.java /*1.在java程序当中,使用editplus工具进行代码编写的时候,有一些单词是蓝色,有的是红色,有的是绿色,有的是黑色,有的是紫色,有的是粉色...... ...

  2. Java标识符的命名规则和命名规范

    一.Java标识符的命名规则 1.Java中的标识符只能使用字母大小写.数字0-9.美元符号$.下划线_ 2.Java中的标识符不能使用关键字.保留字.特殊值,例如class.viod.public. ...

  3. javascript 变量的命名规则和命名规范

    ​ 变量的命名规则和命名规范 - 规则: 必须遵守的,不遵守就是错 一个变量名称可以由 数字.字母(a-zA-Z).英文下划线(_).美元符号($) 组成,如:userrAge, num01, _na ...

  4. JAVA里常见的命名规则和命名规范

    目录 1.什么是标识符呢?标识符又可以标识什么呢? 2.命名规则和命名规范的区别 3.Java标识符命名规则​ 4.包名的命名规范 ​ 5.类名的命名规范​ 6.方法名与变量名的命名规范​ 俗话说&q ...

  5. 变量的命名规则和命名规范

    变量的命名规则和命名规范 规则:(必须遵守的,不遵守就是错) 1.一个变量名称可以由数字.字母.下划线.美元符号($) 组成 2.严格区分大小写 3.不能由数字开头,不要使用中文汉字命名 4.不能是保 ...

  6. python文件命名规则-Python命名规则

    使用内容审核Python版本SDK包,需要您配置Python开发环境.从Python官网下载并安装合适的Python版本.兼容Python2.6+以及Python3.x.推荐使用Python3.x版本 ...

  7. JAVA标识符命名规则及命名规范

    文章目录 一.标识符可以标识什么 二.标识符是什么 三.标识符命名规则 四.标识符命名规范 一.标识符可以标识什么 标识符可以标识类名.方法名.变量名.接口名.常量名等. 二.标识符是什么 凡是程序员 ...

  8. 【详解】标识符命名规则及命名规范

    标识符 凡是可以自己起名字的都叫做标识符.比如类名.变量名.包名.方法名.接口名等. 标识符命名规则 26个英文字母,0-9,_或$ 组成 数字不可以开头 不可使用关键字和保留字 不能包含空格,严格区 ...

  9. python中类的命名规则_python命名规则

    1. 以一个下划线开头的标识符(_xxx),不能访问的类属性,但可通过类提供的接口进行访问,不会被语句 "from module import *" 语句加载 2. 以两个下划线开 ...

最新文章

  1. CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)
  2. SAP HANA中的存储过程(sql procedure)
  3. 如何检查JavaScript中的数字是否为NaN?
  4. android入门学习-天气预报app(一)
  5. Multipart/form-data POST文件上传详解
  6. 抢先试用ReSharper UnitRun™ 1.0
  7. 用好MySQL的21个好习惯!
  8. c语言long double位数,int long double 所占位数 和最大值
  9. ROS学习笔记01:安装ROS - 玩小海龟
  10. dbeaver导出excel文件_vue将数据导出为excel文件就是如此简单
  11. 条码软件如何自定义设置条形码尺寸
  12. 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件
  13. tableau的骑行路线地理数据可视化
  14. 愿天下有情人都是失散多年的兄妹 (25分)
  15. 接入层、汇聚层和核心层工业交换机怎么选?
  16. 设断点报错:Frames are not available
  17. Android开发中虚拟位置定位、应用双开、IP代理检测
  18. LeGo-LOAM激光雷达定位算法源码阅读(二)
  19. [jzoj 1273] 袁绍的刁难 {推理}
  20. anylogic系统动力java工具_AnyLogic Professional 8.7  最新授权

热门文章

  1. 【集合论】集合恒等式 ( 幂等律 | 交换律 | 结合律 | 分配率 | 德摩根律 | 吸收率 | 零律 | 同一律 | 排中律 | 矛盾律 | 余补律 | 双重否定定律 | 补交转换律 )
  2. TCM安全芯片服务器,服务器通信安全加密芯片
  3. python open3d点云可视化(本节会根据实际所用持续更新)
  4. vue项目 调用百度地图 BMap is not defined
  5. Vulnhub靶机:GEARS OF WAR_ EP#1
  6. zepto获取html内容,Zepto这样操作元素属性
  7. 工业机器人和协作机器人有什么区别?工业网关能用吗?
  8. ionic开发——图片加载失败或不存在时显示提示图片的解决方法
  9. 全国2023年自学考试下半年报考专业一览表
  10. java 8583报文解析_8583报文 55域JAVA的解析