为什么要使用像 func('function_name', ...参数)在客户端 SDK 中?



在使用客户端sdk时,我们经常可以发现类似func('function_name', ...args)的模式,gtag就是其中一个例子。

gtag('config', 'GA_MEASUREMENT_ID', { 'send_page_view': false });

为什么没有像gtag.config('GA_MEASUREMENT_ID', { 'send_page_view': false });那样开发这种方法?

有没有一个词指的是这种模式?

如果有的话,我们为什么要使用这种模式,有什么优点和缺点?

谢谢你提前回答。

...args语法被称为rest参数。这允许函数/方法接受任意数量的参数作为数组。

优点

  • 从API的角度来看,函数内部的逻辑应该能够处理将要传入的任何数量的参数,这减轻了用户对所需参数数量的担忧
  • Rest参数通常可以充当子参数,用于捕获与功能执行相关的额外(可选(数据;例如在您的示例中的CCD_ 5
  • 由于参数是任意的,单个函数可以根据传递的参数数量和运行时的值来显示不同的参数解析功能。这种行为在gtag函数中尤为突出

缺点

  • 如果使用不当,Rest参数有时会导致API设计不良。例如,期望用户以正确的顺序传入正确数量的参数。首先,这将不能很好地利用intellisense,因为它不会建议每个参数的确切位置(因为它们都将作为元组处理(,并且函数设计者还需要非常小心,以确保每个参数都以正确的顺序解析。所有这些都可以通过使用普通参数来避免
  • 根据函数的使用方式,可以说需要一个可选数组而不是rest参数更全面

反思gtag;根据第一个(命令(参数的值,它需要不同的参数。这里使用rest参数至关重要,因为它有助于gtag解析和处理同一函数中所有参数的不同组合。正如我所提到的,通过元组维护参数有时会失控,但根据文档,这里的参数数量限制为4,这保持了API的内聚性。

最新更新