4.1 Naming conventions
见微知著, 见名知意
Ruby | Javascript | Go | Lua | |
---|---|---|---|---|
通用命名约定 | underscore_case | camelCase | camelCase | underscore_case |
虽然各语言没有强制要求以上命名约定, 但是用户程序命令, 和语言内置函数/标准库的函数和变量命名格式保持一致, 是一种不错的最佳实践.
大部分语言的命令规则基本一致:
- 需要以字母或者下划线开头, 多个字母, 下划线和数组组合而成
- 区分大小写
- 下划线变量通常代表可忽略变量
有些特例, 比如在Ruby的标识符中, 可能出现=
?
$
@
等, 它们都有特殊的使用场景.
1. Ruby
- 大写字母开头的标识符是常量 (对常量的修改只有警告, 没有错误)
- 语法上, 多单词常量有两种写法:
LikeThis
LIKE_THIS
, 不过通用语法规范支持后者 - 非常量的多单词标识符使用
underscore_case
命名 - 以
$
开头的变量是全局变量 - 以
@
开头的变量是实例变量 - 以
@@
开头的变量是类变量 - 以
_
或者小写字母开头的变量是局部变量 - 作为惯例, 以布尔值为返回值的方法名, 以
?
结尾 - 以
=
结尾的方法, 在调用时可以省略=
, 通常用于定义赋值操作
特殊字面量
__FILE__
当前正在执行的文件名称, 在错误消息里很有用__LINE__
当前正在执行的代码行数__ENCODING__
当前文件的编码对象
2. Javascript
- 构造函数(类)以大写字母开头, 不过这仅是通用语言规范, 语言本身未做限制.
3. Go
大写开头的标识符为导出成员
_
通常作为忽略占位符使用 可以作为表达式的左值, 无法读取内容还可以用在规避编译器对未使用变量的检测
_
预置成员, 不能重新定义
4. Lua
- 下划线加大写字母的标识符通常是Lua的保留字, 命令是不建议使用, 如
_VERSION
虚变量
_
通常用于忽略函数多返回值中不使用的变量:local _, x = string.find(s, p)
不过
_
和普通变量名无区别, 可以读取和重新赋值, 如上的使用方式只是代码风格的要求