开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
标识符(identifier)
标识符(identifier)是用来识别各种值的合法名称,比如一个变量名、函数名、类名等。通常它们都有着一定的规则。
大多数语言对于标识符命名的要求基本都差不太多,比如
- 不能以数字开头。
- 由标准字符组成,字母、数字、下划线,支持Unicode字符的编程语言也都允许汉字、其他语言的字母等非ASCII字符,比如Python、C#支持utf8格式的中文字符作为变量名,当然,不推荐这么使用。
比如C#中使用中文变量名:
string 变量1 = "我是中文变量名";
Console.WriteLine(变量1);
此外,像JavaScript等编程语言,还支持使用特殊字符作为变量名,如$
,单独记住即可,其他地方很少使用。
- 大小写敏感,绝大多数编程语言的标识符都是大小写敏感的
- 语言本身的关键字不能作为变量名。
关键字是编程语言保留的用于特定用途或表示特定结构的字符,比如class
表示定义一个类,int
表示整型等。
关键字(
key word
)也被称为保留字(reserved word
).
C#中支持以
@
作为前缀使用关键字作为变量名。
string @int = "你好"; int @string = 10;
在与其他语言交互时,使用保留字作为标识符很有用。【这句来自官网 learn.microsoft.com/en-us/dotne… 虽然不知道其具体实用意义是什么。】
- 同一作用域内,不能再定义同名的变量。(同一个变量名不能重复定义)
命名规范
常见的命名规范有驼峰式命名法、帕斯卡命名法、下划线命名法和匈牙利命名法,全大写命名法(一般表示常量)、下划线开头命名法(表示字段或成员变量)、I
/i
前缀(一般表示接口的名称)、动宾短语组成方法的名(如Run()
、print()
方法名)等。
所有的命名规范首要的第一要务就是不要进行无意义的命名,即变量名要体现出该变量的含义。比如int age=10;
,age就是一个有意义的命名,准确表示了“年龄”这一变量。
驼峰式命名法(Camel,小驼峰命名法)
驼峰式命名法一般指的是小驼峰命名法,要求组成标识符的第一个单词首字母小写,其余单词首字母大写(有高有低,类似于驼峰)。
int myAge;
char myName[10];
float manHeight;
小驼峰命名法常常用来表示类中的字段、成员变量、私有变量、局部变量等。(成员变量或字段使用下划线前缀的也居多)
帕斯卡命名法(Pascal,大驼峰命名法)
帕斯卡命名法,即大驼峰式命名法,与小驼峰命名法的区别是,第一个单词的首字母要大写。
int MyAge;
char MyName[10];
float ManHeight;
大驼峰命名法常常用来表示类名、方法名(函数名)、属性名等。
下划线命名法
下划线命名法也是比较常见的一种,它将组成标识符的各个单词通过下划线分隔开,所有单词基本都是小写。
int my_age;
char my_name[10];
float man_height;
匈牙利命名法(十分系统却又琐碎的命名规范)
匈牙利命名法是早期的规范,由微软的一个匈牙利人发明的,是 IDE 还十分智障的年代的产物。由于当时的IDE没有智能提示、类型提示、快速跳转等功能,代码量非常多的时候,确定一个变量的类型就很麻烦,所以产生了这样的命名规范。
匈牙利命名法规定,前缀字母用小写的变量类型的缩写,其余部分用英文或其缩写,类型后的单词第一个字母大写。
int iMaxNum; # "i": int
char cFirstName[10]; # "c": char
float fManHeight; # "f": float
Color crBackgroundColor; # "cr": Color Ref
虽然说现在已经不常用匈牙利命名法,但是还是可以了解下,尤其是其常见的类型前缀,非常有意义:
- a 数组(Array)
- b 布尔值(Boolean)
- by 字节(Byte)
- c 有符号字符(Char)
- cb 无符号字符(Char Byte,很少用)
- cr 颜色参考值(Color Ref)
- cx,cy 坐标差(长度 Short Int)
- dw 双字(Double Word)
- fn 函数(Function)
- h Handle(句柄)
- i 整形(Int)
- l 长整型(Long Int)
- lp 长指针(Long Pointer)
- m_ 类成员(Class Member)
- n 短整型(Short Int)
- np 近程指针(Near Pointer)
- p 指针(Pointer)
- s 字符串(String)
- sz 以 Null 做结尾的字符串型(String with Zero End)
- w 字(Word)
命名规范的意义
符合规范的统一命名是程序编写的基本要求,通常一个团队内要做到编码风格的统一,规范命名就是最重要的一环。
- 风格统一,便于代码理解、审查和重构等。
- 含义清晰,不进行无意义的变量命名,使代码编写一目了然。
变量
变量是用于引用特定类型的实例的标签。【
A variable is a label that refers to an instance of a specific type.
】
变量、变量名、变量的声明和初始化
变量表示一个“值”,它是对“值”的具名引用,变量和它的“值”是等同的。变量名就是变量的名字。
变量就是为“值”起名,引用这个名字,就等同于引用这个值。
比如。下面声明一个变量并赋值,变量名为num,其值为int类型的1:
int num = 1;
=
将数值1赋值给变量num,后面引用(使用)变量名num,就会得到其值1。int
是变量的类型。
数据类型加变量名用来声明变量。
int num2;
(未赋值或未初始化的变量)。
未初始化的变量通常都有一个默认值,不同的数据类型默认值不同。
int num2; // int类型的默认值为0
对应的,方法或函数,就表示可执行的一段代码,它们各自有着方法名或函数名用来执行;类(class)也有类名。
静态变量、局部变量和常量
- 通过关键字static指定的变量为静态变量
静态变量相对于普通变量(类变量)来说,可以直接应用,而无需创建类的对象。
对于一个变量来说,在类内可以直接使用,如果在类外,则必须通过类的实例进行访问;而静态变量可以直接通过类名引用,而不需要创建对象再引用。(静态方法同理)
静态变量只会创建一次,C#中,静态成员只能通过类名引用,而不能通过实例访问。
class A
{
public static int K=100;
public static void StaticMethod(){}
}
A.K = 100; // 通过类名引用静态变量
var a = new A();
// 类的实例不能引用静态成员
//a.K;
//a.StaticMethod();
- 在一个独立的程序块中声明的变量,只在该范围内有效,因此也叫局部变量
如下,局部变量只能在所属的(块级)作用域内使用。内层作用域的变量可以使用外层的变量。
- 常量是使用
const
指定的变量,声明的时候必须初始化,并且常量值不能修改。
常量用来存储固定数值,一旦初始化就不会再改变
常量主要用来表示自然界中的常数、不变的量。比如圆周率π、重力加速度g等。
const double PI = 3.1415926;
参考
感谢编程世界的无私分享!