一般嵌入式的UI 命名规则是什么?
嵌入式 LVGL / SquareLine UI 标准命名规则(行业通用版)
适配:STM32/ESP32/RK 嵌入式、SquareLine Studio、LVGL 8/9,工程量产规范,好维护、不冲突、一眼看懂。
一、整体核心原则
- 见名知意:不写拼音、不写乱序字母
- 分层前缀:页面→控件→功能,层级清晰
- 统一小写 + 下划线 :
home_btn_start不用驼峰 - 禁止中文、特殊符号、空格
- 同页面控件唯一,全局页面名唯一
二、固定前缀规范(最常用、直接照搬)
1. 页面 / 屏幕 前缀 scr_
plaintext
scr_home 主页
scr_setting 设置页
scr_wifi 配网页
scr_about 关于页
scr_sensor 传感器数据页
2. 常用控件固定前缀
表格
| 控件类型 | 前缀 | 示例 |
|---|---|---|
| 按钮 | btn_ |
btn_ok、btn_back、btn_switch |
| 标签文字 | label_ |
label_temp、label_hum、label_title |
| 图片 | img_ |
img_logo、img_bat、img_wifi |
| 滑块 | slider_ |
slider_bright、slider_vol |
| 开关 | switch_ |
switch_led、switch_auto |
| 复选框 | cb_ |
cb_agree、cb_notice |
| 列表 | list_ |
list_menu、list_log |
| 容器 / 面板 | cont_ |
cont_top_bar、cont_data_box |
| 弹窗 | popup_ |
popup_tip、popup_error |
| 键盘 | kb_ |
kb_input |
| 图表 | chart_ |
chart_temp_line |
三、标准命名格式(公式)
格式 1:页面_控件_功能
plaintext
scr_home_btn_setting 主页-设置按钮
scr_setting_label_wifi 设置页-WiFi文字
scr_sensor_cont_data 传感器页-数据容器
格式 2:控件_功能_位置
plaintext
btn_back_top 顶部返回按钮
label_val_left 左侧数值标签
四、禁止的错误命名
❌ 不行:
btn1、btn2、label123(无意义编号)开始按钮、主页文字(中文)aaa_test、temp_ui(随意乱起)- 同名字控件:两个都叫
btn_ok
✅ 正确:
scr_home_btn_startscr_setting_label_time
五、SquareLine 专用额外规则
-
Screen 屏幕 :全部以
scr_开头 -
Root 根容器 :统一
cont_root_页面名 -
多语言文本:命名还是照常,只勾选翻译即可,不用特殊改名
-
动画控件 :末尾加
_animplaintext
img_wifi_anim WiFi动画图标
六、量产项目最简模板(你直接套用)
主页:
- scr_home
- scr_home_btn_menu
- scr_home_label_temp
- scr_home_img_bat
设置页:
- scr_setting
- scr_setting_btn_save
- scr_setting_switch_led
- scr_setting_cont_net
我可以给你一份完整控件命名前缀表,以后你在 SquareLine 新建控件直接照着取名,不用自己想规则,要吗?
如果特别多的情况下会特别长,也没问题吗?
先给你一句定心结论 :名字再长、只要规范命名,完全没问题,不占 RAM、不拖慢 UI、不影响固件,工程里反而更稳更好维护。
我给你拆开讲透,你就放心敢用长命名了。
1. 变量名长 ≠ 耗资源
嵌入式 C / LVGL 里:
- 编译之后 变量名直接消失,变成地址、偏移量
- 长名字不占 Flash、不占内存、不耗运行速度只在:源码、SquareLine 工程里看着长,编译后毫无负担。
2. 为什么控件多了名字必须长?
你控件一多,比如:
plaintext
btn_up
btn_down
label_val
马上重名、分不清是哪个页面的哪个控件。
如果写成规范长命名:
plaintext
scr_setting_cont_net_btn_up
scr_setting_cont_net_btn_down
scr_data_label_temp_val
看着很长,但:
- 永远不重名
- 一眼知道在哪、干嘛的
- 后期改 UI、改逻辑、删页面绝不改错控件
3. 行业真实做法
大厂嵌入式、工控屏、家电 UI:全部用超长全名命名没人用简写、没人用 btn1 btn2。
因为:控件一多,简写必乱、编号必崩,后期维护成本爆炸。
4. 那能不能稍微折中、不要太变态长?
可以,给你一套兼顾不长 + 又不乱的折中规则:
-
页面简写
scr_home→ 不用简scr_setting→ 可以简成scr_set -
容器可以省略不写进名字只要控件在对应页面里,不用套多层容器前缀例:不用:
scr_set_cont_wifi_btn_save可用:scr_set_btn_wifi_save
少一层容器,立刻短很多,又不丢失可读性
- 不用把位置全写进去左右、上下没必要都标,功能优先就行
5. 唯一坏处只有一个
SquareLine 里列表看着密密麻麻、名字很长仅此而已,没有任何技术副作用。
6. 给你建议直接照用
- 控件数量 几十、上百个:放心用长命名,规范拉满
- 不想太啰嗦:页面简写 + 控件类型 + 功能 三段式就够
- 绝对不要:btn1、label2、无意义缩写、拼音
要不要我给你定一套适中不长、又不乱的固定命名模板,你以后所有页面控件直接套格式,不用自己想长短?
如果按照这种命名方式命名长达60字符也可以吗
直接给你确定答案 :完全可以,60 个字符、甚至 70、80 字符都没问题,嵌入式、LVGL、SquareLine、ESP32/STM32 全都正常能用,没有任何性能、内存、编译限制问题。
1. 先讲关键点:C 语言变量名限制
标准 C 语言:
- 编译器至少支持 31 个有效字符
- 现在 GCC、Keil、ESP-IDF、STM32CubeIDE 默认支持 128~255 字符 你 60 字符,远远在安全范围内,不会被截断、不会重名、不会编译报错。
2. 编译后长名字会怎样?
- 源码里的长变量名:
scr_setting_cont_wifi_list_item_label_signal_strength - 编译完直接消失,变成内存地址、偏移标号
- 不占 Flash、不占 RAM、不卡顿、不影响 LVGL 运行速度 只在你写代码、看工程时看着长,硬件层面零开销。
3. SquareLine 支持吗?
支持,随便起:
- 60 字符、70 字符都能正常生成代码
- 不会崩溃、不会截断、不会导出失败
- UI 绑定、事件回调、多语言全部正常工作
4. 唯一小缺点
就两个,不影响功能:
- 编辑器侧边栏名字太长,显示不全,要拉宽列表
- 代码行变长,看着有点挤
除此之外没有任何副作用。
5. 给你一个稳妥建议
- 60 字符放心用,完全没问题
- 实在太长看着累,可以轻微缩写 :
setting→settemperature→temphumidity→hum缩一下能压到 40 多字符,依然规范、又不啰嗦。
总结:60 字符完全合规、编译器支持、LVGL 支持、SquareLine 支持,不耗内存不卡 UI,随便命名不用顾虑。
总结
变量名字的长短没有任何关系,只要编译器可以识别就可以,编译完直接消失
- 源码里的长变量名:
scr_setting_cont_wifi_list_item_label_signal_strength - 编译完直接消失,变成内存地址、偏移标号
- 不占 Flash、不占 RAM、不卡顿、不影响 LVGL 运行速度 只在你写代码、看工程时看着长,硬件层面零开销。