hsx8998283 发表于 5 天前

[Lua]变量命名有什么规范?

本帖最后由 hsx8998283 于 2026-5-22 07:06 编辑

Lua 的变量命名可以分为“硬性语法规则”和“软性代码规范”两部分。前者是必须遵守的,否则代码会报错;后者是程序员之间的约定俗成,目的是为了让代码更易读、更专业。

🛑 硬性语法规则(必须遵守)

1. 组成元素:变量名只能包含字母(A-Z, a-z)、数字(0-9)和下划线(_)。
2. 开头限制:不能以数字开头。
   * ✅ 合法:myVar, var_1, _test
   * ❌ 非法:1var, 2nd_name
3. 区分大小写:Lua 是严格区分大小写的语言。
   * myname, MyName, MYNAME 在 Lua 中是三个完全不同的变量。
4. 避开关键字:不能使用 Lua 的 22 个保留字(如 if, for, local, end, nil 等)作为变量名。
5. 特殊字符:除了下划线,不能包含其他特殊符号(如 @, $, %, - 等)。

💡 软性代码规范(行业最佳实践)

在 Lua 社区(尤其是游戏开发和大型项目中),大家通常会遵循以下命名风格,让你的代码看起来更专业:

1. 局部变量与函数名:小驼峰命名法 (camelCase)
第一个单词首字母小写,后续单词首字母大写。这是 Lua 中最常见的命名方式。
* 普通变量:playerHealth, localIndex, userName
* 函数名:通常以动词开头,如 getName(), calculateSum()

2. 全局变量、类名与模块:大驼峰命名法 (PascalCase)
所有单词的首字母都大写。通常用于定义类(Class)、模块名或极少数必须使用的全局变量。
* 类/模块:Player, GameManager, NetworkModule

3. 常量:全大写 + 下划线 (UPPER_SNAKE_CASE)
如果一个变量的值在程序运行中永远不会改变(常量),通常全部大写,单词间用下划线隔开。
* 常量:MAX_SPEED, PI, ADULT_MIN_AGE

4. 私有变量或内部使用:下划线开头 (_)
在表(Table)或类中,如果某个变量或函数是“私有的”(不希望被外部直接调用),习惯在名字前加一个下划线。
* 私有成员:_instanceId, _internalData

📌 命名规范速查表
变量类型         推荐规范                      示例
普通局部变量   小驼峰 (camelCase)   local playerScore = 100
函数名          小驼峰 (camelCase)    function getUserName() ... end
类 / 模块名   大驼峰 (PascalCase)   local Player = class("Player")
常量      全大写下划线 (SNAKE_CASE)   local MAX_RETRY_COUNT = 3
私有变量   下划线开头   self._privateData = {}

⚠️ 避坑指南(特别注意)

* 慎用“下划线+大写字母”开头:比如 _VERSION 或 _G。这种命名格式通常被 Lua 官方保留用于内部的全局变量或特殊用途。虽然语法上允许你定义,但极易引发冲突,日常写代码时最好避开。
* 见名知意:尽量避免使用 a, b, tmp 这种毫无意义的单字母变量名(除非是在很短的 for 循环中作为计数器,如 for i = 1, 10 do)。使用 playerHealth 绝对比 ph 要好得多。
* 不要带类型前缀:在现代 Lua 编程中,不需要像老旧的 C 语言那样给变量加类型前缀(比如 strName, nAge 是不推荐的),直接叫 name, age 即可。

hsx8998283 发表于 5 天前

看帖回帖是礼貌也能赚积分

woshifengmin 发表于 5 天前

学习受教了,这个基础知识是真的地基,感谢分享
页: [1]
查看完整版本: [Lua]变量命名有什么规范?