3、ARXML命名规范:包命名规则、元素命名规则、版本命名规则、文件命名规则
命名这件事,说实话,在ARXML开发里是最容易被忽视的。我见过太多项目,架构设计得漂漂亮亮,结果一打开ARXML文件,包名乱得像一锅粥,元素名全靠拼音硬凑。嗯,这种项目后期维护起来,那叫一个痛苦。
我个人习惯是:命名规范必须在项目启动第一天就定下来。别等到写了几百个文件再回头改,那时候改一个名字可能牵动几十个引用关系,谁改谁崩溃。
下面我把ARXML命名规范拆成四个维度来讲:包、元素、版本、文件。每个维度我都会结合自己踩过的坑来说。
3.1 包命名规则
包(Package)在ARXML里相当于文件夹,用来组织各种元素。你想想看,一个项目几百个SWC,如果没有合理的包结构,找东西全靠搜索,那效率得多低。
我建议的包命名格式:
公司名.项目名.模块名.子模块名
全部使用小写字母,用点号分隔。举个例子:
com.byd.atlas.bms.cellmonitor
com.byd.atlas.bms.voltage
com.byd.atlas.bms.temperature
核心原则:
- 全小写,避免大小写混用带来的引用问题
- 点号分隔,层级清晰
- 从通用到具体,最左边是公司,最右边是具体功能
- 包名长度控制在4-6层,太深了反而难维护
我的经验: 我在一个项目里见过有人把包名写成 com.company.project.team.module.submodule.function.impl.v1,整整8层。每次引用都要写一长串,代码可读性极差。后来我们强制规定:包名最多5层,超过的必须合并或重新划分。
3.2 元素命名规则
元素包括SWC、Port、Interface、DataType、Runnable等等。这些命名直接决定了ARXML的可读性。
我推荐的命名风格:
| 元素类型 | 命名风格 | 示例 |
|---|---|---|
| SWC (Application) | PascalCase + Swc后缀 | BmsCellMonitorSwc |
| SWC (Composition) | PascalCase + Comp后缀 | BmsSystemComp |
| Port (Provided) | P + 功能名 | PCellVoltage |
| Port (Required) | R + 功能名 | RCellTemperature |
| Interface | I + 功能名 + If后缀 | ICellDataIf |
| DataType | 类型前缀 + 语义名 | uint16_CellVoltage |
| Runnable | 动词 + 名词 | ReadCellVoltage |
注意: 千万不要用拼音命名!我曾经接手过一个项目,里面全是 DianYa_SWC、WenDu_Interface 这种名字。后来老外团队看不懂,全部重命名,光改引用就花了两周。
命名长度控制: 我个人建议元素名不超过40个字符。太短了语义不清,太长了写代码时眼睛累。比如:
// 不推荐(太短)
CellSwc
// 不推荐(太长)
BatteryManagementSystemCellMonitorApplicationSwc
// 推荐
BmsCellMonitorSwc
3.3 版本命名规则
版本管理是ARXML里最容易出乱子的地方。我记得有一次,两个团队各自修改了同一个ARXML文件,一个改了版本号没更新,另一个更新了版本号但内容没同步。结果集成时对不上,排查了整整一天。
我建议采用语义化版本号:
主版本号.次版本号.修订号
例如:2.1.3
| 版本号位 | 变更条件 | 示例 |
|---|---|---|
| 主版本号 | 接口不兼容、架构重大调整 | 1.x.x → 2.0.0 |
| 次版本号 | 新增功能、向下兼容 | 1.0.x → 1.1.0 |
| 修订号 | Bug修复、内部优化 | 1.0.0 → 1.0.1 |
版本号在ARXML中的位置:
- 每个ARXML文件的
<AR-PACKAGE>里必须包含版本信息 - 版本号与SVN/Git的tag保持同步
- 每次发布前,检查所有文件的版本号是否一致
避坑指南: 我曾经遇到过一个项目,版本号写的是 V2.1.3_final_final_真的不改了。这种命名方式在ARXML里是不合法的,而且容易造成版本混乱。版本号只允许数字和点号,最多加个 -SNAPSHOT 表示开发中版本。
3.4 文件命名规则
ARXML文件命名,说白了就是让每个人看到文件名就知道里面装的是什么。我见过最离谱的命名是 新建文件1.arxml、最终版.arxml,这种文件在集成时根本没法用。
我推荐的文件命名格式:
模块名_类型_版本号.arxml
举个例子:
bms_cellmonitor_swc_v2_1_0.arxml
bms_system_comp_v2_1_0.arxml
bms_datatypes_v2_1_0.arxml
| 文件类型 | 命名示例 | 说明 |
|---|---|---|
| SWC定义 | bms_cellmonitor_swc_v2_1_0.arxml | 包含SWC内部结构 |
| Composition | bms_system_comp_v2_1_0.arxml | 系统级组合 |
| DataType | bms_datatypes_v2_1_0.arxml | 数据类型定义 |
| Interface | bms_interfaces_v2_1_0.arxml | 接口定义 |
| Constants | bms_constants_v2_1_0.arxml | 常量定义 |
特别注意:
- 文件名中不要使用空格,用下划线代替
- 版本号中的点号用下划线代替,避免文件系统解析错误
- 文件名长度建议不超过60个字符
- 同一个模块的文件,版本号必须一致
嗯,以上就是ARXML命名规范的核心内容。说白了,命名规范不是为了好看,而是为了让人和工具都能快速理解你的设计意图。我见过太多项目因为命名不规范,导致集成时各种报错,最后不得不花大量时间返工。
记住一句话:规范的命名,是ARXML可维护性的基石。你花10分钟想好一个名字,可能为团队节省10小时的排查时间。
总结一下我的个人经验:
- 包名:全小写+点号,不超过5层
- 元素名:PascalCase + 类型后缀,不超过40字符
- 版本号:语义化版本,严格遵循Major.Minor.Patch
- 文件名:模块_类型_版本,下划线分隔
把这些规则写进团队的《ARXML开发规范》文档里,每个人开发前先读一遍。相信我,这能省掉你后期80%的集成痛苦。