Compose 调用层参数设计规范(基于默认值复用原则)

Compose 调用层参数设计规范(基于默认值复用原则)

一、核心设计思想

如果一个属性在大多数情况下都不变,就不应该在每个页面都去设置它。

  • 调用层(Page/Screen)职责:仅填充业务内容,不配置UI细节。
  • 中间层职责:完成通用UI配置后,调用层应"保持沉默",仅传递差异化数据。

通俗类比:订购笔记本电脑

层级 角色 核心行为
结构层 工厂模具 定义屏幕位置、键盘位置等基础布局规则
中间层 产品经理 定义默认银色、默认16G内存、默认带充电器等通用配置
调用层 消费者 场景A(标准版):仅说"我要一台"(无差异化数据);场景B(定制版):仅说"我要32G内存"(仅传差异化数据)

二、代码写法对比

前提

UserInfoCard 中间层已配置默认背景、默认图标、默认样式。

1. 坏的写法(未利用默认值)

调用层重复传递通用UI配置,代码臃肿且难以维护:

kotlin 复制代码
// 调用层
UserInfoCard(
    title = "陈奕迅",
    backgroundImage = R.drawable.ic_mine_login, // 每次都要传
    titleRightDrawable = IconRes(R.drawable.svg_tag_vip), // 每次都要传
    bottomRightDrawable = IconRes(R.drawable.svg_arrow), // 每次都要传
    padding = 16.dp // 甚至还要传间距
)
2. 好的写法(仅传差异化数据)

场景A:最基础的展示(仅传核心业务数据)

kotlin 复制代码
// 只需要传 title,因为除了 title,别的卡片都长一样
UserInfoCard(title = "陈奕迅") 

场景B:超级VIP用户(仅传差异化图标)

kotlin 复制代码
// 只有"图标"是和别人不一样的(差异化),所以只传图标
UserInfoCard(
    title = "周杰伦",
    titleRightDrawable = IconRes(R.drawable.svg_tag_super_vip) 
)

三、核心优势

  1. 代码可读性:调用层可直接体现卡片的业务重点(如"该卡片的特殊之处是超级VIP图标")。
  2. 降低改版成本:若需修改通用配置(如所有卡片默认背景图),仅需修改中间层一个默认值,全App所有调用处自动生效;若调用层重复传参,则需修改所有调用位置。

总结

  1. 调用层应遵循"最小传参原则",仅传递与默认配置不同的差异化数据。
  2. 通用UI配置(背景、图标、间距等)统一在中间层通过默认参数定义,避免调用层重复配置。
  3. 该设计可提升代码可读性,大幅降低UI改版时的维护成本。
相关推荐
Akir.weiwen1 天前
⑤ 消费格式差异:同一份契约的四角色消费格式
人工智能·编译·设计规范·语义
撩得Android一次心动2 天前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
lhldsg7 天前
相册印刷实战指南:从设计规范到系统落地全流程解析
java·小程序·架构·设计规范
stevenzqzq8 天前
Compose 生命周期与副作用的核心奥秘
android·compose
智购科技无人售货机工厂8 天前
2026自动售货机云端API设计规范:从RESTful到GraphQL的接口演进~YH
android·人工智能·驱动开发·单片机·云原生·pandas·设计规范
XiaoLeisj9 天前
Jetpack Compose 知识点
android·kotlin·android jetpack·compose
Akir.weiwen11 天前
③ 约束显化:把隐含的语义假设变成显式规则
人工智能·编译·设计规范·语义
蜡台14 天前
Jetpack Compose 稳定性、重组优化(Stable / @NonRestartableComposable)
android·kotlin·compose·jepack
电子科技圈16 天前
IAR与东软睿驰达成战略合作,强化软件开发效率与生态协作
设计模式·开源·软件工程·软件构建·代码规范·设计规范·代码复审
m0_7496902319 天前
【寻迹校园 HarmonyOS NEXT 实战 35】先写全页面 Design Spec 再写 ArkUI:一个比赛项目的设计稿门禁实践
harmonyos·响应式设计·设计规范·arkui·ui设计