关于 roblox-luau-patterns
面向 Roblox Luau 开发的模式指南,涵盖模块设计、资源所有权、任务调度和失败约定,帮助开发者规划生命周期并审查代码。
主要功能
- 01选择函数、模块与对象结构
- 02明确资源所有权
- 03区分失败与 nil 结果
- 04有目的地调度任务
- 05审查模块约定
适用场景
- 01为功能选择模块结构
- 02清理任务与信号连接
- 03处理可能返回 nil 的调用
- 04检查调度与启动行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-luau-patterns安装后在 Claude Code 中输入/roblox-luau-patterns确认已加载。
附带文件references/full.md
详细介绍
Luau 模式
何时加载
在涉及模块结构、资源所有权、调度和失败契约时加载。语义请参阅 roblox-luau-core,类型请参阅 roblox-luau-types,启动流程请参阅 roblox-architecture。
快速参考
选择结构
- 普通函数: 无状态转换或验证的默认选择。
- 含私有状态的模块: 由一个明确的子系统负责。不要仅为函数分组而创建管理器类。
- 带元表的对象: 多个独立值需要共享行为和生命周期时使用。
- 现有库抽象: 如果项目已经一致地使用某种抽象,就遵循它。不要仅为一个调用点添加 Promise、信号、清理或框架依赖。
构造函数使用 .,实例方法使用 :;可变字段应属于实例,而非类表。
明确所有权
信号连接、实例和任务都需要负责清理的所有者。拆卸时断开连接或取消任务。导出带类型的自定义信号载荷(Signal<T...>)。
先配置再设定父级,以隐藏不完整状态。只有在需要祖先关系时才提前设定父级,并说明原因。这不保证复制顺序。
保留失败语义
local ok, value = pcall(dataStore.GetAsync, dataStore, key)
if not ok then
return nil, `read failed: {value}`
end
return value, nil -- value may legitimately be nil
不要把“调用成功并返回 nil”与“调用失败”混为一谈。只有当领域操作可以安全重复时才重试。持久化、HTTP、购买和远程调用请参阅各自领域的技能。
命名和返回契约
实践约定:将会让出执行权的函数标记为 Async,保持返回值数量一致,并优先使用具名模块导出。遵循现有项目契约;详情见 full.md。
谨慎安排调度
谨慎使用 task.defer、task.spawn、task.delay 和 task.cancel。避免使用旧式 wait() 和缺乏依据的轮询。优先采用实际的状态变更信号;否则,选择明确的调度间隔并进行测量。
审查
所有者明确,公共 API 范围精简,没有循环 require,没有意外的并发启动,成功状态与缺少数据的状态保持区分,连接和任务均得到清理,并将客户端输入交由 roblox-networking 处理。
评论
支持 Markdown