## 命名
最好的代码是自说明代码,这种代码不需要多余的注释,其本身便具备了描述作者意图的信息。一种好的命名风格是自说明代码的基础。
### 命名法
#### 驼峰命名法
* 小驼峰式命名法:第一个单字以小写字母开始;第二个单字的首字母大写,例如:`firstName`、`lastName`。
* 大驼峰式命名法:每一个单字的首字母都采用大写字母,例如:`FirstName`、`LastName`、`CamelCase`,也被称为Pascal命名法。
#### 下划线命名法
* 小下划线命名法:所有字母均为小写,例如登录按钮:`login_btn`。
* 大下划线命名法:所有字母均为大写,常见于常量,例如:最小间隔时间`MIN_GAP_TIME`。
采用驼峰法或者下划线法都不太重要,重要的是你采用了自己喜欢的一种命名法,然后一直保持下去。
### 变量名长度
通常作用域范围更大的变量名要比作用域范围更小的变量名具有更多的描述信息。例如:`i`经常用于循环中充当计数变量,而将其作为全局变量使用容易导致诸多问题。
### 变量命名
对于变量(包括函数),小驼峰式命名法或小下划线命名法是一个好选择。比如:`curSpeed`表示当前速度,`canDrop`表示是否能掉落等等。
对于布尔值型的变量,通常前缀加上`is`可以方便理解,比如`isRemoved`比`Removed`更加能表示这是一个布尔值变量。
Lua中有一种特殊的变量名:`_`,常用来表示可以被忽略的、不会使用到的变量,常使用在循环中。
~~~
-- `_`表示表的键可以被忽略,只在循环内使用表中的值`v`
for _,v in ipairs(t) do print(v) end
~~~
在表的循环中和函数参数列表中,`i`常表示`ipairs`下的数组下标,`k`常表示`pairs`下的键,`v`常表示对应的值,`t`则表示表。
~~~
for k,v in pairs(t) do ... end
for i,v in ipairs(t) do ... end
mt.__newindex = function(t, k, v) ... end
~~~
### 常数命名
Lua里没有严格的常数定义标识符,所以对于常数的命名格外重要。
常数一般采用大下划线命名法。这样每个字母都大写,十分醒目,且各个单词都用下划线分割,便于阅读。
比如:`MAX_SPEED`表示最大速度,`IS_SHOW_DEBUG_ERROR_MSG`表示是否显示报错消息等等。
### 类名
为了不与变量名和常数名混淆,类名通常使用大驼峰式命名法,即首字母大写。比如:`TouchManager`表示触摸管理器类。
### 包和模块名
包名和模块名通常很短,并且全部小写,单词间并没有下划线区分。比如:文件读取库名为`lfs`,表示`Lua File System`;XML解析库名为`lxp`,表示`Lua XML Parser`等等。
### 文件名
通常为了不与类名混淆,对于文件名,经常使用小驼峰式命名法或小下划线命名法。