3、ARXML命名规范:包命名规则、元素命名规则、版本命名规则、文件命名规则

命名这件事,说实话,在ARXML开发里是最容易被忽视的。我见过太多项目,架构设计得漂漂亮亮,结果一打开ARXML文件,包名乱得像一锅粥,元素名全靠拼音硬凑。嗯,这种项目后期维护起来,那叫一个痛苦。

我个人习惯是:命名规范必须在项目启动第一天就定下来。别等到写了几百个文件再回头改,那时候改一个名字可能牵动几十个引用关系,谁改谁崩溃。

下面我把ARXML命名规范拆成四个维度来讲:包、元素、版本、文件。每个维度我都会结合自己踩过的坑来说。

ARXML 命名规范四维体系 包命名规则 Company.Project.Module 全小写+点号分隔 元素命名规则 PascalCase / camelCase 语义清晰+前缀规范 版本命名规则 语义化版本号 Major.Minor.Patch 文件命名规则 模块名_类型_V版本 下划线分隔+版本号 核心原则 可读性 > 简洁性 | 一致性 > 灵活性 | 可追溯 > 随意性

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_SWCWenDu_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%的集成痛苦。

专注资料整理