关于TagGroupAddLabeledTagGroup返回src_tag_group的设计疑问
关于
TagGroupAddLabeledTagGroup返回值的设计逻辑解析 1. 返回src_tag_group的设计目的
核心是契合DM-script API的链式调用设计惯例,同时强化操作的直观性:
- 这个函数的核心功能是将
src_tag_group挂载到tgt_tag_group下,返回src可以让开发者在完成挂载操作后,直接对目标对象做后续操作,无需额外写一行变量引用。 - 虽然DM-script中TagGroup是引用类型,开发者本来就可以直接访问
src,但返回实例能明确确认操作的对象一致性,消除开发者对“是否是同一个实例”的潜在疑问,让代码逻辑更确定。
2. 链式调用与可读性提升的场景
这种设计最直接的价值就是简化链式调用,让代码更紧凑连贯。比如:
传统写法
TagGroup tgt = NewTagGroup() TagGroup src = NewTagGroup() src.TagGroupSetTagAsString("SampleName", "TestData") TagGroupAddLabeledTagGroup(tgt, "RawData", src) // 后续操作src src.TagGroupSetTagAsNumber("Version", 1)
链式调用写法
TagGroup tgt = NewTagGroup() TagGroupAddLabeledTagGroup(tgt, "RawData", NewTagGroup().TagGroupSetTagAsString("SampleName", "TestData")) .TagGroupSetTagAsNumber("Version", 1)
后者把“创建src→设置初始属性→挂载到tgt→补充属性设置”的流程串成一行,减少临时变量的冗余,逻辑线条更清晰。
3. DM-script中同类设计模式的示例与益处
DM-script的核心API大量采用这种“操作后返回目标对象”的设计,典型例子包括:
- TagGroup类方法:
TagGroupSetTagAsString、TagGroupSetTagAsNumber等属性设置方法,均返回调用的TagGroup实例,支持连续设置多个属性。 - Image类方法:
ImageClone()返回克隆后的图像实例、ImageResize()返回调整尺寸后的图像,ImageAddImage()返回运算后的结果图像。 - Window类方法:
WindowCreate()返回创建的窗口实例,WindowSetTitle()返回该窗口,支持链式配置窗口属性。
这类设计的统一益处:
- 减少冗余代码,避免创建大量无意义的临时变量。
- 让代码的执行流程更线性,尤其是构建复杂对象(如嵌套TagGroup、多步骤图像处理)时,链式调用能清晰展示操作顺序。
- 保持API设计的一致性,降低开发者学习成本,熟悉一种模式后就能快速上手其他同类API。
内容的提问来源于stack exchange,提问作者ChenZX
相关产品推荐
相关产品推荐

