结论:
程序员也想用空格,可是程序不允许
。本文带你了解深层次原因。
前言
本文尝试从
多种语言的规范
角度,说明
程序代码,或者命令行
内为什么
不提倡用空格
。
语言层面的规范
本段从
各个语言的角度
,说一下。
1 - C语言
C语言是上帝赐给人类的礼物
。他有很明确的规范,最新的也就是 ANSI-C 标准。
在定义变量时,变量名可以是
字母、数字和下划线的组合
。但是也不是随便的组合,要注意以下几个命名规则:
-
变量名的开头必须是
字母或下划线
,不能是数字。
-
变量名中的字母是
区分大小写
的。
-
变量名绝对不可以是
C语言关键字
。
-
变量名中不能有空格。
看到了吗,变量名只能在 a-z, A-Z, 0-9,_,之间选择,没有其他项。
第四条,
因为上述限制,也绝对不允许出现“空格”
。
2 - Java语言
Java用途广泛,使用众多。
其命名规则(Naming rules)如下。
-
变量名称
区分大小写
。
-
变量的名称可以是任何
合法标识符
。
-
可以包含Unicode字母、数字和另外两个特殊字符,如下划线(_)和美元符号($)。
-
变量名的长度任意。
-
变量名以
字母开头
(也可以使用下划线,但一般不用)。
-
某些自动生成的变量可能包含“$”符号。
-
尽量避免使用“$”符号。
-
不允许使用空格
。
-
不允许使用特殊字符
。
-
不允许以数字开头
。
-
后续字符可以是字母、数字、$符号或下划线。
-
变量名不能是
关键字或保留字
。
看到了吗,
空格是不允许使用的
。
3 - Python语言
上面两种都是
强类型语言
,我们看看
以python为代表的解释型脚本语言
规范如何。
python命名规则如下:
-
变量名仅支持数字、字母和下划线。
-
变量名只能以字母,或下划线开头。
-
变量名不能以数字开头。
-
变量名区分大小写。
-
变量名内不允许有空格
。
-
不允许其他特殊字符。
-
变量名不能是关键字。
可以看到,python受C语言的影响痕迹很重,基本保持了C的命名规则。
4 - 比较新的语言GO
我们再拿go语言做比较,
go是一门现代化的语言,融合了编译型和解释性语言的优秀设计理念
,便于开发使用。
go语言的变量命名规则:
-
名称
必须以字母开头
,并且可以包含任意数量的其他字母和数字。
-
变量名
不能以数字开头
。
-
变量名不能包含空格。
-
如果变量的名称以
小写字母开头
,则只能在
当前包中访问该变量
,这被视为未导出的变量。
-
如果变量的名称以
大写字母开头
,则可以从
当前包之外的包访问该变量
,该包被视为导出的变量。
-
如果一个名称由多个单词组成,则第一个单词之后的每个单词应按如下方式大写:empName、EmpAddress等。
-
变量名
区分大小写
(cAR、CaR和CAr是三个不同的变量)。
-
变量名不能是
关键字
。
从上面的四种语言举例中,可以看到每种语言都明确写到“不允许变量名包含空格”。
因为无论是静态编译型语言,还是解释型语言,都是要将代码解析为机器码执行。空格、换行符、空行是没有意义的,会被编译器忽略。如果使用了带空格的变量,语法就会出错。
命令行
说完编程语言代码层面的内容,我们把目光转向命令行,主要介绍一下
widnows平台和linux平台中,空格的特殊用途
。
1 - windows dos
widnows平台主要说一说dos指令,因为它是bat批处理文件的基础。
空格是位置分隔符,也就是命令行传入参数argvs用于区分位置参数的分隔符。
例如下面这个创建文件夹指令:
md path ofile
如果加上空格:
md path tofile
则会创建两个目录 path,和 tofile。这不是我们想要的结果。
2 - linux shell
linux命令行下,功能几乎是一样的,空格是默认的位置参数分隔符。
例如创建如下目录:
mkdir -pv a/b/c
如果加上空格:
mkdir -pv a/ b/c
结果也不是我们想要的。
结语
我们知道,
空格在多数语言内,或者命令行内
,是保留关键词,是
“占位符”,“分隔符”
。
如果与系统命名冲突,造成程序不可控运行,这是非常危险的。
我是@程序员小助手,持续分享编程与程序员成长相关的内容,欢迎关注~~