Lua的编码规范
风格管的是代码长什么样,编码规范管的是怎么写才不容易出错。下面按命名、格式、注释、作用域、表、错误处理和代码组织列出推荐做法。
1. 变量命名
名字要描述用途,别用无意义的缩写或单字母。风格上 snake_case 或 camelCase 都行,认准一种:user_name 或 userName。
示例:
lua
local user_name = "Alice" -- 下划线分隔
local UserName = "Alice" -- 驼峰命名法2. 函数命名
函数名用「动词+名词」,写出它做什么、对谁做:calculate_sum、get_user_data。全库统一一种风格,别混用。
示例:
lua
-- 计算两个数的和
function calculate_sum(a, b)
return a + b
end
-- 获取用户数据
function get_user_data(user_id)
-- 实现代码
end3. 缩进与格式
缩进用 2 个空格,别用制表符(tab),各编辑器显示才一致。每行控制在 80 到 120 个字符以内。
操作符前后留空格,括号和函数名之间不留:a + b 而不是 a+b,function foo(arg) 而不是 function foo (arg)。
示例:
lua
local x = 12
-- 不推荐(虽然语法合法,但所有内容挤在一行,难以阅读)
if(x>10)then return x+5 end
-- 推荐
if x > 10 then
return x + 5
end4. 注释
复杂或不直观的逻辑要加注释,写清楚意图,句子要短。函数、模块和类按 LuaDoc 这类格式写文档注释,参数、返回值和用法示例都写全。
示例:
lua
--- 计算两个数的和
-- @param a 第一个数
-- @param b 第二个数
-- @return 两个数的和
function add(a, b)
return a + b
end5. 局部变量与全局变量
变量用 local 定义,命名冲突少,访问也快。变量和函数都别放在全局作用域,功能按模块划分。
示例:
lua
-- 不推荐
global_var = 42
function global_function()
return global_var
end
-- 推荐
local local_var = 42
local function local_function()
return local_var
end6. 表(Tables)
相关的数据和方法收进同一个表,用表模拟对象和数据结构。字符串作键时建议带引号,table["key"] 而不是 table.key,键里含特殊字符时尤其如此。
示例:
lua
-- 定义一个用户表
local user = {
name = "Alice",
age = 30
}
-- 访问表中的字段
print(user["name"]) -- 使用字符串键访问7. 错误处理
可能出运行时错误的地方用 pcall 包起来,别只靠 assert。错误消息写清楚,排查时省时间。
示例:
lua
local success, result = pcall(function()
-- 可能会发生错误的代码
end)
if not success then
print("Error: " .. result)
end8. 代码组织
一个模块只负责一件事,加载用 require,文件末尾用 return 导出模块表(module 函数自 Lua 5.2 起已被移除,不要用)。文件和目录结构保持清晰,别把所有代码塞进一个文件。
示例:
lua
-- math_utils.lua
local MathUtils = {}
function MathUtils.add(a, b)
return a + b
end
return MathUtils