为什么有些编程语言不建议用下划线作为标识符开头?
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
编程语言标识符为什么不能以数字开头?
一个普世原则,数字开头的Token代表数值,不管是十进制、八进制还是十六进制(0x开头)。当然,不以数字开头就被认为是普通标识符。这种简单的约定,方便了编译器词法分析的难度,程序员也很容易理解。
为什么有些编程语言不建议用下划线作为标识符开头?
- C/C++中两个下划线开头的标识符可能是预留给运行时库的保留字。写代码的时候,就建议最好不要用下划线开头的标识符,避免冲突。最怕的是,编译器没提示错误,运行时产生奇怪的结果。
- 但对于Java/C#而言,大部分情况下,这条规则并不适用。它们有更好地封装,哪怕下划线开头的变量也被限定在包或者类内部,不会和它们的运行时冲突。
需要特别注意的是,微软为C#保留了几个关键字,如__arglist, 不确定未来会不会明确当做关键字。比较安全的做法是,尽量不以下划线开头做标识符。 - 在Python中,下划线开头的标识符有特别的含义,单下划线开头代表protected类型,双下划线开头代表private,还有一些特定的方法例如__init__是系统定义的名字。
- 仓颉对此无特别约束。
标识符的特殊字符
- C/C++/ObjC不允许@和$作为标识符的一部分
- Java允许$作为标识符一部分,例如:$a可作为变量。
- C#允许@作为标识符一部分。例如,@a可作为变量。
- Java和C# 甚至可以复用关键字作为标识符,例如$for和@for.
- Python不允许@和$作为标识符
- JS和Java类似,可以用$.
- Swift允许用反引号包围作为标识符使用,关键字也适用:
let `class` = 1
print("class: \(`class`)")
也支持用一部分Emoji符号作为标识符,例如:
let = 100
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。