36 lines
1.8 KiB
Plaintext
36 lines
1.8 KiB
Plaintext
---
|
||
description: 通用 GDScript 文件结构、命名、类型、注释与错误处理规范
|
||
globs: "**/*.gd"
|
||
alwaysApply: false
|
||
---
|
||
|
||
# GDScript 风格
|
||
|
||
## 文件结构
|
||
|
||
按 Godot 风格保持稳定顺序:`@tool`(如需)→ `class_name`(如需)→ `extends` → 文档注释 → signals → enums → constants → exports → public members → private members → lifecycle → public methods → private methods。
|
||
|
||
- 可复用类型使用 `class_name`;仅由 autoload 注册的脚本避免重复声明同名全局类。
|
||
- 缩进使用 Tab,单个文件内不得混用 Tab 与空格。
|
||
- 一个脚本聚焦一个主要职责;脚本持续膨胀时按状态、数据访问或表现职责拆分。
|
||
|
||
## 命名
|
||
|
||
- 文件、变量、函数、参数和信号使用 `snake_case`。
|
||
- 类名使用 `PascalCase`,常量使用 `UPPER_SNAKE_CASE`。
|
||
- 私有成员和私有方法使用 `_` 前缀;参数与成员冲突时使用 `p_` 前缀。
|
||
- 信号名称表达已经发生的事件,如 `entity_selected`,避免含糊的 `changed`。
|
||
|
||
## 类型与接口
|
||
|
||
- 函数参数和返回值显式标注类型;局部变量优先 `:=` 推断,容器尽量声明元素类型。
|
||
- 跨系统边界避免无结构的 `Dictionary`;可复用数据优先使用具名类型、Resource 或明确 schema。
|
||
- 可空值、失败返回和副作用必须从签名、名称或文档中可见。
|
||
- 只对已理解且范围最小的问题使用 `@warning_ignore`,不全局压制告警。
|
||
|
||
## 注释与诊断
|
||
|
||
- `##` 用于公开类型、属性和方法的文档;普通注释解释原因与约束,不复述代码。
|
||
- 日志和警告包含稳定的模块或类标签以及关键上下文。
|
||
- 可恢复的外部数据问题用明确错误信息处理;真正的内部不变量可用 `assert`,不要用断言处理正常用户输入。
|